Unity的Vsync Count垂直同步原理剖析

 大家在做Unity游戏开发 或 玩游戏的时候应该注意到了“垂直同步”这个名词。现在很多游戏特效设置了里边都有这个选项,那么到底是打开还是关闭垂直同步? 垂直同步是什么意思 ,有什么作用呢?
 
      提示:如何打开或关闭垂直同步
进入游戏后在游戏的画面设置里边一般都会有垂直同步的开关选项的,如图:

Unity的Vsync Count垂直同步原理剖析_第1张图片
 
       垂直同步是什么意思?

       垂直同步又称场同步(Vertical Hold),从CRT显示器的显示原理来看,单个象素组成了水平扫描线,水平扫描线在垂直方向的堆积形成了完整的画面。显示器的刷新率受显卡DAC控制,显卡DAC完成一帧的扫描后就会产生一个垂直同步信号。我们平时所说的打开垂直同步指的是将该信号送入显卡3D图形处理部分,从而让显卡在生成3D图形时受垂直同步信号的制约。

       垂直同步的作用:
 
      简单来说垂直同步的作用是防止画面撕裂。因为画面的渲染不是整个画面一起渲染的,是逐行或者逐列渲染。如果关闭垂直同步,而 电脑配置 不够,则画面在高速移动中会出现这一画面还没渲染完成就开始下一画面的撕裂情况。
 
       打开与关闭垂直同步的主要区别在于那些高速运行的游戏,比如实况,FPS游戏,打开后能防止游戏画面高速移动时画面撕裂现象,当然打开后如果你的游戏画面FPS数能达到或超过你显示器的刷新率,这时你的游戏画面FPS数被限制为你显示器的刷新率。你会觉得原来移动时的游戏画面是如此舒服,如果达不到会出现不同程度的跳帧现象,FPS与刷新率差距越大跳帧越严重。关闭后除高速运动的游戏外其他游戏基本看不出画面撕裂现象。关闭此选项画面流畅程度会有一定的提高。
 
       为什么是否关闭垂直同步信号会影响我们CS中的fps数值?道理一点都不复杂,首先我们平时运行操作系统一般屏幕刷新率是多少?大概一般都是在85上下吧,那么显卡就会每按照85的频率时间来发送一个垂直同步信号,信号和信号的时间间隔是85的分辨率所写一屏图像时间。
 
      如果我们选择“等待垂直同步信号”(也就是我们平时所说的“垂直同步打开”),那么在游戏中,或许强劲的显卡迅速的绘制完一屏的图像,但是没有垂直同步信号的到达,显卡无法绘制下一屏,只有等85单位的信号到达,才可以绘制。这样fps自然要受到操作系统刷新率运行值的制约。
 
      而如果我们选择“不等待垂直同步信号”(也就是我们平时所说“关闭垂直同步”),那么游戏中作完一屏画面,显卡和显示器无需等待垂直同步信号,就可以开始下一屏图像的绘制,自然可以完全发挥显卡的实力。
 
      但是,不要忘记,正是因为垂直同步的存在,才能使得游戏进程和显示器刷新率同步,使得画面平滑,使得画面稳定。取消了垂直同步信号,固然可以换来更快的速度,但是在图像的连续性上,性能势必打折扣。这也正是很多朋友抱怨关闭垂直后发现画面不连续的理论原因!

 
       什么是画面撕裂:
 
      画面撕裂可以简单的理解为,这一帧的数据打进显示器,上一帧的还没消去。结果就是画面上面和下面显示不同步。
 
      其实图像显示是一张一张的图片高速的覆盖,形成影像。而通常说的帧数,就是指每秒刷新图像的次数。计算机算出图片结果就要渲染在屏幕上,而渲染和算出的花费时间是不一样的,
通常算的会非常快,而渲染要慢的多。开了垂直同步,计算机就会等待上一张图片渲染完成后才会发出开始下一张渲染的命令;不开垂直同步,那么计算机就急不可待的想把算好的结果渲染在屏幕上,这样就容易出现上一张还没有渲染完,又来新的图来覆盖,时间差大到一定程度就会出现屏幕撕裂。
 
      下边是一张关于画面撕裂的例子(实际情况,没有图中这么夸张的)
 

       什么情况下打开或关闭垂直同步:
 

      在玩fps类游戏时,如果帧数过高画面有撕裂的话就会感觉头痛头晕。此时就需要打开垂直同步,以保持画面输出的稳定。一般游戏建议开垂直,保护显卡,降低功耗,而普通的60帧与在高的帧数已经无法用肉眼直接看出区别了,不影响游戏体验。除非你的显卡性能非常低,不开垂直远远不能达到屏幕刷新率的帧数,这种情况下关闭垂直同步,可以一定程度上减小显卡的负担,让画面更加流畅一些。

       所以说一些低配置的手机,开垂直同步实在是蛋疼,建议关闭。

你可能感兴趣的:(Unity引擎技术)