VSync是垂直同期
VSync是垂直同期(Vertical Synchronization)的简称。基本的思路是将你的FPS和显示器的刷新率同期起来。其目的是避免一种称之为”撕裂”的现象。再下面我将详细介绍这些内容。
每一台CRT显示器都有自己的刷新率。其单位是HZ.其数值是显示器每秒钟更新画面的次数。不同的显示器支持再不同分辨率下的不同刷新率。它的范围可以从低到60高到100。注意它不是你游戏中所提到的那个FPS.如果你设置了一个特定的刷新率,显示器将一直按照这个速率刷新画面。甚至画面没有任何的改变。液晶显示器就不同了。LCD的每个像素在被告知改变的时候将一直是亮着的。他们不需要刷新。但是因为VGA(或是DVI)的工作原理,LCD不得不从显示卡那里按一定的速率得到新的新画面。这就是虽然LCD不必要更新,但是他还是有自己的刷新率。
我想这里的每一人都明白FPS。它显示显示卡在每秒钟可以描画多少画面。这显然是越高越好。但是对于快速变化的游戏而言,你的FPS很难一直保持同样的数值,他会随着你所看到的显示卡所要描画的画面的复杂程度而变化。这样画面的撕裂就发生了。
所谓”撕裂”就是一种画面分离的现象,就象你照一张照片,在旋转哪怕一度再照一张照片,然后把两张照片的从中间裁开,用一张照片的上半部与另一张的下半部对接起来。这样得到的画像虽然相似但是上半部和下半部确实明显的不同。这就被称之为视觉现实上的撕裂。它不会一直从中间分开,它可能靠近上面也可能下面,分离点可能在屏幕上下移动,也可能在两点间前后移动。(译者:原文的作者实在是啰嗦,其实就是画面移动较快的时候,画面看上去是两截。这种现象恐怕打游戏的都看到过)。
为什么会发生这种现象呢?让我们举一个特定的例子。让我们假定你的显示器的刷新率是75Hz, 你真在玩你最喜欢的游戏,而且你现在有100的FPS.这就意味着你的显示器每秒更新75次画面,而你的显示卡每秒更新100次,比你的显示器快33%。这就意味着在你的显示器更新画面的时间里,显示卡描画了1+1/3的画面。这样在画面显示的时候,那个1/3的画面就会覆盖那个完整画面上部的1/3。在下次的图像刷新的时候,显示卡会描画剩下来得2/3和新的2/3的画面。这样,因为屏幕的更新只能跟上画面更新的2/3,这样图像的上部的1/3或是下部的1/3就会和剩下的画面合不上。如果画面的变化不大可能不太会注意到这一点,但是如果你快速的环顾四周那就会非常的明显。
现在,一个很普遍的误解就产生了。一些人认为解决这个问题的方法就是简单设置一个FPS的限制让FPS不超过显示器的刷新率,这样显示卡就不会超过75FPS,这样就可以了。真的吗?错!
部分函数与可计算函数
为了包括所有的直观可计算函数,需要把原始递归函数类扩充为部分递归函数类。设g(x1,…,xn,z)是原始递归函数,如果存在自然数z使g(x1,…,xn,z)=0,就取f(x1,…,xn)的值为满足g(x1,…,xn,z)=0的最小的自然数z;如果不存在使g(x1,…,xn,z)=0的自然数z,就称f(x1,…,xn)无定义。把如上定义的函数f加到原始递归函数类中,就得到部分递归函数类。因为不能保证如上定义的f在一切点都有定义,故称其为部分函数。处处有定义的部分递归函数称为递归函数。部分递归函数类与图灵机可计算函数类相同。对于每个n元部分递归函数f,可以编一个计算机程序P,以自然数x1,…,xn作为输入,若f(x1,…,xn)有定义,则P函数值执行终止并输出的f(x1,…,xn),否则P不终止。
Copyright 2015-2022 财富赢家网版权所有 联系邮箱:920 891 263@qq.com