关于"垂直同步"

前言:垂直同步与帧数有很大的关系,画面是否流畅实际上与垂直同步是有关系的。但究竟是什么关系呢?这个问题其实既简单又复杂。狗狗了一下,搜集了一些文章分享如下。并且在我翻译的文章《游戏玩家的显卡设置指南》中也会对“垂直同步”进行分析。

http://www.firingsquad.com.cn/fsnews/view_16889.html&p=0
前言
  我们经常忽视了那些人们在游戏中到底会开启怎样效果的讨论,而我们只是将注意力都放在了自己的测试中。事实上,我们在基准测试中采用的游戏设置,也正是我们在玩游戏时候推荐采用的,但却有一个很重要的差别,那就是游戏中我们会尽可能在开启垂直同步的同时开始三重缓冲。
  尽管这个设置并不是所有游戏都支持,但它确实是需要的,我们今天就要想办法让玩家知道,为什么玩家需要开启三重缓冲和游戏开发者应该让游戏支持它。许多游戏,玩家们开启时候对待垂直同步的方式往往是一开始就在驱动中或者游戏中禁用。

垂直同步与三重缓冲
  实际上,我们的测试中也关闭了垂直同步,这是因为我们需要看到在无限制情况下的性能情况,但是开启垂直同步后,对于实际游戏的视觉效果来说是有明显提升的,但是却无法避免牺牲帧率。我们希望在今天的分析中作一些改变,现在我们就告诉你。
  我们要告诉读者,垂直同步到底意味着什么,三重缓冲和双重缓冲的区别。在阅读完我们今天的分析后,希望读者自己可以了解到垂直同步的重要性。首先我们先要对双重缓冲和垂直同步有一个概念了解,随后我们才可以带来三重缓冲,我们还会跟进一些更加深入的信息。

原理
  当电脑在显示器上显示东西时,它按照它的想法画一幅需要显示的图像,我们称之为缓冲区Buffer,传输给显示器。在过去,只有一个缓冲区并不断的被电脑绘制和发送给显示器。这种做法有一些优势,但也有非常大的缺点。
  最值得注意的是,当物体在屏幕上进行了更新,他们往往会导致闪烁。为了解决同一缓冲区内绘制的同时又读取的问题,使用双重缓冲,就成了最经济的方式。双重缓冲背后的原理是:计算机只绘制一个缓冲区,同时发送另一个缓冲到屏幕上。

双重缓冲
  当计算机完成绘制后部缓冲时,图像绘制程序会执行缓冲区“交换”。这种交换不会移动任何东西:唯一的改变是交换两个缓冲器的名称,前部缓冲区成为后部缓冲区的同时后部缓冲区成为前部缓冲区。
  经过缓冲交换,程序可以开始起在新的后部缓冲区绘制同时电脑传送新的前部缓冲区给显示器,直至下一次缓冲区交换发生,大多数情况下如此。这种形式的双重缓冲,“交换”随时可能发生。这意味着,在电脑发送数据给显示器的同时,就可能发生“交换”。
  在这种情况下,同一帧下其余的画面根据新的前部缓冲器进行显示。如果新前部缓冲内容与旧的前部缓冲相差很大,就会观察到一种视觉上的“撕裂”感。这种类型的问题,常常出现在高帧率的FPS游戏中,特别是转角处快速运动时看到。

提高速度
  由于快速运动,每帧有很大的不同,当“交换”发生在前后差异很大的场景绘制途中,就会被察觉到同时干扰人的视觉感受。最常见的做法是等待显示器准备充分时“交换”缓冲器。显示器准备充分意味着在完成绘制完上一幅图像后刚好赶上下个垂直刷新周期将会开始,同步缓冲区交换与垂直刷新被称作垂直同步 。
  开启垂直同步确实能修复图像“撕裂”,它同时会设置游戏的内部帧率的最大值与显示器的的刷新率一致,大多数液晶面板通常是60Hz。这可能会牺牲的性能:如果游戏不能保持在每秒60帧的运行时,图像绘制程序会人为的增加延迟到图像帧输出之间来达到同步效果。
  哪怕是每一帧所需的绘制时间超过16.67毫秒一点点都可能导致性能可减少将近一半 。在这种情况下,帧速率将下降到每秒30帧,尽管游戏的运行速度极其接近60帧 。消除画面撕裂和保持帧数一致,确实有助于增加游戏流畅度,这是单纯的双重缓冲模式无法提供的。

解决延迟
  同时开启垂直同步后的输入延迟将会成为更加严重的问题。这是因为人为加入的延迟增加了实际发生的事情和最终显示在屏幕上的画面的区别。输入延迟始终存在,我们不可能在绘制的瞬间实时的反映变化,但诀窍是,尽量减少它。
  我们目前的选择一个是只进行双重缓冲但是会导致解决画面撕裂问题,二是进行垂直同步的双重缓存但是会影响性能和输入延迟。但是不要担心,有一种选择,结合了两者的优点,既不牺牲画面质量也不会影响真实的性能。这种选择就是三重缓冲。

三重缓冲
  光看这个名字就已经很明显了:三重缓冲使用三个缓冲区。这种额外的缓冲区使计算机有足够的空间来锁定一个正被送往显示器的缓冲区以避免撕裂,同时也不限制图像的绘制速度,就算是有一个缓冲区被锁定,也能来回绘制剩下的两个缓冲区。
  软件来回绘制两个后部缓冲器,当每一次刷新时,前部缓冲区就与最近完成的那个后部缓冲区交换。这确实需要一些额外的图形卡存储空间,大约15到25M之间,但与现代的图形卡动辄512MB显存来说这不构成什么问题。有了三重缓冲我们获得了不开启垂直同步时高效的性能和相似的低输入延迟,同时还实现了开启垂直同步时的图像质量。
  现在,重要的一点是,当你看开启了三重缓冲游戏的“帧数”时,你将不会看到实际的“性能”。这是因为帧计数器像FRAPS这种只能计算前部缓冲换出的次数。在双重缓冲时,数据显示在每个帧绘制并被显示器显示的时候,也就是说, 如果另一帧在下一次刷新前绘制好了,它可能不会显示出来。
  三重缓冲,前部缓冲在每个刷新周期最多只“交换”一次 。同时也异于没有开启垂直同步的双重缓冲 ,一旦我们开始传输一个完整绘制好的帧给显示器时,我们不会在中途切换到另一个帧去。三重缓冲会导致的问题,如果一个帧只比刷新完成晚很小一点点就被生成出来,在无垂直同步的双重缓冲情况下,将在屏幕上方附近产生画面撕裂,而其余部分则会比三重缓冲更准确的反应实时变化。
  即使在这种情况下,但至少帧的部分的画面元素双重缓冲和三重缓冲是一致 的,同时三重缓冲的延迟也非常难以察觉,至少比开启了垂直同步的双重缓冲延迟问题好得多。即使你认为这是无垂直同步的双重缓冲模式的优点,这优点也是建立在不影响视觉的画面撕裂之上。



1、要知道什么是垂直同步,必须要先明白显示器的工作原理。
  显示器上的所有图像都是一线一线的扫描上去的,无论是隔行扫描还是逐行扫描,显示器,都有2种同步参数——水平同步和垂直同步。
2、啥叫水平同步?啥叫垂直同步?
  垂直和水平是CRT中两个基本的同步信号,水平同步信号决定了CRT画出一条横越屏幕线的时间,垂直同步信号决定了CRT从屏幕顶部画到底部,再返回原始位置的时间,而恰恰是垂直同步代表着CRT显示器的刷新率水平!
3、关键部分
  为什么是否关闭垂直同步信号会影响我们CS中的fps数值?道理一点都不复杂,首先我们平时运行操作系统一般屏幕刷新率是多少?大概一般都是在85上下吧,那么显卡就会每按照85的频率时间来发送一个垂直同步信号,信号和信号的时间间隔是85的分辨率所写一屏图像时间。
  如果我们选择“等待垂直同步信号”(也就是我们平时所说的“垂直同步打开”),那么在游戏中,或许强劲的显卡迅速的绘制完一屏的图像,但是没有垂直同步信号的到达,显卡无法绘制下一屏,只有等85单位的信号到达,才可以绘制。这样fps 自然要受到操作系统刷新率运行值的制约。
  而如果我们选择“不等待垂直同步信号”(也就是我们平时所说“关闭垂直同步”),那么游戏中作完一屏画面,显卡和显示器无需等待垂直同步信号,就可以开始下一屏图像的绘制,自然可以完全发挥显卡的实力。
  但是,不要忘记,正是因为垂直同步的存在,才能使得游戏进程和显示器刷新率同步,使得画面平滑,使得画面稳定。取消了垂直同步信号,固然可以换来更快的速度,但是在图像的连续性上,性能势必打折扣。这也正是很多朋友抱怨关闭垂直后发现画面不连续的理论原因!



大家跟我谈下对于“垂直同步”的理解吧!
经常看到一些貌似内行的玩家建议配置低的朋友通过关闭垂直同步来提升游戏中的流畅度,可我却总觉得这样有点不妥,那么就先说说我的理解:
  垂直同步按理说应该是使游戏中的最高帧数与显示器的刷新率保持一致的一种技术。现在有很多游戏(特别是动作和球类)为了保持原汁原味都采取了限制最高帧数的做法,大多都不得超过30fps或60fps,而目前台式LCD的刷新率基本都是75hz或85hz的水平,这样一来如果开启垂直同步,反而可以提高游戏帧数(典型例子:PES2008)。但是对于那些没有帧数限制的游戏(FPS类居多)来说,如果开启了垂直同步,那样就将游戏中的最高帧数限制死了(因为刷新率是固定的),所以就有玩家提议通过关闭垂直同步来释放帧数,为此在某些场景中,帧数经常会飙至200以上,让人玩起来快感十足,虽然意义不大(人眼无法辨别)!
  但关键是,那些通过关闭垂直同步来释放帧数的玩家,他们的电脑都有一个最起码的共同点:可以达到和LCD刷新率相同的游戏帧数。而显卡配置低的朋友,比如各位本友的8400MGS,我们在玩一些配置要求不低的游戏时,如果调高画质(低画质那效果。。。不如不玩),经常连一些游戏的限制帧数都达不到,更别谈和显示器刷新率保持一致了(虽然本本的刷新率仅60hz),所以我认为垂直同步关不关对于我们玩这类游戏根本没有任何影响,因为我们的8400MGS很难达到60fps,也就不存在限制帧数的说法。当然了,对于那些没有帧数限制的白菜配置游戏,关闭垂直同步理应可以突破60fps的!
  所以我的观点就是:配置低的显卡想拖高配置的游戏,垂直同步没有任何效果!
posted @ 2009-10-05 21:33  芈希有  阅读(1479)  评论(0编辑  收藏  举报