什么是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,這樣就能夠了。真的嗎?錯!
在我解釋為什么之前,讓我來講一下雙倍緩沖。雙倍緩沖一種用來減輕撕裂問題,盡管不是非常全然。基本上來說你有一個顯示緩沖和一個后備緩沖。當顯示器要顯示畫面的時候,就會從顯示緩沖里“推出”顯示畫面。顯示卡則在后備緩沖里描畫另外一個新畫面,當描畫完畢后則將新畫面考入顯示緩沖里。可是這個過程須要時間,假設顯示器的刷新在拷貝過程中進行的話,顯示器上顯示的仍然是個"撕裂"的畫面。
VSync 通過建立一個不讓在顯示器刷新前將后備緩沖中的畫面復制到顯示緩沖中的規定來解決問題。假設FPS高于刷新率的話,沒有問題。后備緩沖的更新完畢后,系統處于等待狀態。當顯示器刷新后,后備緩存考入顯示緩存,顯示卡則能夠在后備緩存里描畫新的畫面,這樣就非常有效的將你的FPS限制在顯示器的刷新率的范圍內。
這樣看起來不錯,可是讓我們來看一個另外一個不同的樣例。讓我們假定你已經玩到了你最喜歡的游戲的最后一關,這個游戲有非常好的圖像.你顯示器的刷新率還是在75。可是你的FPS如今僅僅有50了,比刷新率要低33%.這就意味著每次顯示器刷新圖像,你的顯示卡僅僅能畫出下一楨畫面的2/3。讓我們看看它是怎樣工作的。顯示器剛剛更新,第一楨的畫面已經復制到顯示緩沖,第二楨的畫面的2/3被寫入后備緩沖,這時顯示器又一次刷新,它會第一次從顯示緩沖里提取第一楨的畫面。然后顯示卡開始完畢的第二楨剩下的部分。可是它必須等待,應為再下一次刷新之前它是不會上傳的。顯示器再次刷新,顯示器不得不第二次從顯示緩沖里提取第一楨的畫面,然后第二楨的畫面被寫入顯示緩沖。顯示卡在后備緩沖中寫入第三楨的2/3.等到顯示器刷新,第一次從顯示緩沖里提取第二楨的畫面,顯示卡開始完畢的第三楨剩下的部分。然后又是第二次從顯示緩沖里提取第二楨的畫面,然后第三楨的畫面被寫入顯示緩沖。如此類推。這樣4次顯示器刷新,我們僅僅能的到2楨的畫面。假設刷新率是75的話,我們僅僅能得到35的FPS.非常明顯這個數值要低于顯示卡能夠帶到的50FPS.這主要就是應為顯示卡不得不在描畫后備緩沖上浪費時間。而在此過程中,后備緩沖上的畫面是不能被復制到顯示緩沖。理論上講,雙緩沖的VSync,FPS將是一組不連續的整數,其等于刷新率/n,n是正整數。也就是說,假設你的刷新率是60hz,你能得到的FPS僅僅能是
60,30,20,15,12,10 等等。你能夠注意到60到30是一個相當大的差距。僅僅要的顯示卡的FPS在60到30之間,你說得到的真實FPS都將僅僅能等于30!
如今,你明確為什么有人不喜歡它了。讓我們回到一開始的那個樣例。你在玩你最喜歡的游戲,刷新率是75HZ,100FPS。你打開VSync.游戲就被限制在75FPS,沒有問題,沒有撕裂圖像,看起來不錯。你到了一個圖像特別復雜的地方,在不用VSync的時候,你的FPS下降到了60左右。可是你打開了VSync,你的FPS實際就僅僅有37.5。這樣你的游戲突然從75FPS變成了37.5FPS,無論37.5仍然非常流暢可是你一定會注意到刷新率突然降低了一半。當讓假設下面變到25FPS的話,實際的現實率可能就僅僅有17.5。本來還能夠玩的游戲,就變成了幻燈片。這就是大家不喜歡它的原因。
假設你的游戲的FPS能夠一直穩定的大于顯示器的刷新率,VSync是個不錯的東西。可是假設FPS忽大忽小。VSync就是讓人煩的東西。假設你的游戲FPS一直都小于刷新率的話,實際的FPS要遠遠小于顯示卡能夠顯示的FPS.看上去就象是VSync減少了你的FPS,可是從技術角度講,不是應為圖像太復雜,而是由于VSync就是這樣工作的。
也不是說全部的希望都沒有了。如今的triple-buffering技術能夠用來解決問題。讓我們再來看刷新率75。FPS50的樣例。第一楨在顯示緩沖,第二楨的2/3在后備緩沖。顯示器刷新第一楨第一次被顯示,在后備緩沖里描畫第二楨的剩下的1/3,在第二后備緩沖里描畫第三楨的1/3(由于我們有三級緩沖了)。顯示器再次刷新第一楨第二次被顯示,第二楨放入在顯示緩沖,第三楨的的1/3放入后備緩沖,第二后備緩沖里描畫第三楨剩下的2/3。接下來顯示器再次刷新的時候,第二楨被顯示,第三楨就能夠放入顯示緩沖,這樣我們就能夠在3次刷新中得到2楨的畫面。也就是刷新率的2/3,也就是50FPS.triple-buffering理論上講能夠避免緩沖寫入是帶來的延遲現象,這樣就不會浪費時間。可是triple-buffering并非適用于全部的游戲。實際上它并非普及(這個文章可能寫的太早,如今triple-buffering已經非常普及了),并且它也會影響顯示卡的性能,應為它須要很多其它的顯示內存,須要很多其它時間在內存之間降數據拷貝來拷貝去。可是triple-buffering確實是一個非常好的方法,既能夠消除撕裂畫面又能夠不像普通VSync一樣影響你的FPS.
我希望這篇文章是實用的,能夠幫出你理解VSync的工作原理。(特別是不再猶豫是否打開VSync)總之,假設沒有triple-buffering的情況下,怎樣權衡Vsync的FPS限制和消除撕裂畫面帶來的視覺感受,那將全然取決于你個人的喜好。
譯者按:假設這篇文章的機理是正確的。triple-buffering也不是萬能的,實際上就是把降低1/2變成了降低1/3而已,假設是FPS恰好卡到了一定的數值的時候沒有問題,一旦沒有,那就絕對要損失FPS.所以對于那種FPS剛剛超過24的游戲,無論有沒有triple-buffering,都應該關.
液晶顯示器的刷新頻率為何不能調高?
郵件地址為lipi****491@163.com的讀者詢問:聽說顯示器的刷新頻率越高,屏幕閃爍程度就越小,對眼睛的傷害也就少了,可是我的液晶顯示器刷新率為什么僅僅有60Hz,不能像別人那樣調高到75Hz或是85Hz呢?
答:這里有一個誤解。
原來我們使用的是CRT技術的顯示器,為保證長時間地注視屏幕而眼睛不疲勞,我們一般都會把刷新率調到75H甚至是85Hz,這是因為CRT技術的特性決定的,刷新率越高也就意味著圖像越清楚、越穩定。可是對于LCD來說,因為液晶板本身并不發光,僅僅是液晶分子控制光線的偏轉或通過,發光的是背光源,即熒光燈管,在使用的時候即使把刷新率調到60Hz你也不會感到屏幕在閃爍,“刷新率”對LCD來說已經沒有多大意義了,所以在使用液晶顯示器的時候,我們是不必過于苛求刷新率的高低的。
總結
- 上一篇: 郭兰英老公(郭兰英个人简历表)
- 下一篇: 中兴电信光纤猫F450获取管理员密码方法