战队新闻 -> 技术文章
战队简介 新闻动态 队内赛事 下载专区 战队论坛 队员专区
>> 国际新闻 >> 国内新闻 >> 技术文章 >> CS 图片

[转载] 到底什么是垂直同步。

nanalo [ 2006-03-22 14:57 ] 本文被浏览过2935


几乎所有试图研究CS的FPS的朋友都将不可避免的面对这样一个名词——垂直同步,到所有的CS专业论坛去问如何提高FPS,得到的绝大多数回答也基本都是——关闭垂直同步,当大家关闭了垂直同步,得到了较高一FPS后,你知道是为什么么?今天,飞扬就和大家一起来探讨这个看似简单的名词——垂直同步。
(本文与cs关系不是非常紧密,请朋友们选择阅读)

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

在Window 2000或XP下,打开垂直同步并使FPS超过60的方法
  以前,对于在Windows 2000或Windows XP上玩CS的人来说,是否开显卡的垂直同步是个两难的选择。不开垂直同步可以得到更高的FPS,但画面老是抖动,打时间长了眼睛很累;开了垂直同步,FPS就肯定超不过60。我自己为这事苦恼过很长时间,一直没找到好的解决办法。后来苦心钻研了一些资料后才找到问题所在。可能有人已经知道怎么解决了,但我相信还有很多朋友不知道该怎么办,因此把解决办法公布,希望能对大家有所帮助。
  在Window 2000或XP下,开垂直同步后FPS超不过60的原因是:Window 2000或XP在这种情况下会把游戏中的FPS设定为Windows的缺省值60,再好的配置也没用。
  解决这个问题的办法很多,可以用第三方程序如PowerStrip等,但这种办法需要外挂程序,可能不安全。最近,我终于找到最根本的解决办法,就是在直接在注册表里把Windows的缺省值改成100(或更高,只要你的显示器支持就可以)。请千万注意:在修改注册表前,一定要确认你的显示器在不同的分辨率下所支持的最高刷新频率。比如,我的电脑在1024*768的分辨率下能达到100Hz的刷新频率,我玩CS也是在这个分辨率下玩,所以,我才敢把Windows的缺省值设为100。另外也请注意,这样修改完注册表后,你电脑桌面的分辨率和刷新频率也会被限定为这个数值。

修改注册表的方法如下:
  运行regedit命令进入注册表修改界面;
进入[HKEY_LOCAL_MACHINEsystemCurentControlSetControlClass],打开"Class"键,你将看到一大排的键,类似于{4D36E96E-E325-11CE....}
如果你选中其中一个键你将可以看到一些键值,如"Default"、"Class"等,并指明设备的种类,如"Modem", "Keyboards"等,逐个打开这些{4D36E96E-E325-11CE....}键,直到看到"Class"的键值是"Monitor"。好的,我们已经找到控制显示器的注册信息了,接下来就是在这里面改缺省值了。
  打开你刚找到的那个键,里面至少应该有1个键,叫做"0000",这里也可能有其他的键,如"0001"、"0002"等。如果里面只有个"0000",那就简单了,你直接在"0000"里按下面的方法修改就可以了。如果有多个键,你就必须逐个找出来哪个键是控制你的显示器的,方法是逐个键地按照下面说的“修改缺省值的操作”进行修改,修改后立即用下面说的“检查缺省值是否修改”的方法检查,如果相符就说明这个键是控制你显示器的,否则就不是。
修改缺省值的方法:
  打开"0000"或你找到的其他的键,你可以看到里面有个"MODES"键,打开它你将看到一个键显示的是你的显示器的最大分辨率,"1600,1200",现在假设你要在1024*768的分辨率下达到100Hz的刷新率,那么操作如下:在"MODES"下增加一个键叫做"1024,768",在"1024,768"键里增加一个键叫做"Mode1",键值设为"100-100,100-100"。修改缺省值得操作完毕。(备注:设为100时必须你的显示器本身在1024*768的分辨率下能达到100的刷新率,如果你的显示器在1024*768下只能支持到85,那么不要把这个值改为100,否则容易引起显示器故障)
“检查缺省值是否修改”的方法:
  进入"Display properties -> Setting",看分辨率是否为你设定的值,如果不是那么说明你修改的那个类似于"0000"的键不是现在控制你显示器的键,如果分辨率是你设定的值(如1024*768),那么再进"Advanced -> Monitor"里面看显示器的刷新频率是不是也是你设定的值,如果是,选中"Hide all unsupported modes"后你的刷新频率应该只有一个值可以选择,就是你设定的值(如100Hz),这说明你修改得正确。

总结:
  修改后,你进入游戏后无论游戏是用Direct3D还是OpenGL,你的FPS都可以超过60了。这个修改方法对Windows 2000和Windows XP都有效


[C]Copyleft 2005 - 2006 BJGW 战队
BJGW^[6M] 分队 Rain.M*, Mistruster 提供
京ICP备06025768号