VSync Count 垂直同步

2022-03-25 06:28:07 字數 1405 閱讀 8732

unity3d中新建乙個場景空的時候,幀速率(fps總是很低),大概在60~70之間。一直不太明白是怎麼回事,現在基本上明白了。我在這裡解釋一下原因,如有錯誤,歡迎指正。在unity3d中當執行場景開啟profiler的時候,我們會看到vsync 這一項佔了很大的比重。這個是什麼呢,這個就是垂直同步,稍後再做解釋。我們可以關閉vsync來提高幀速率,選擇edit->project settings->quality 在右側面板中可以找到vsync count

,把它選成don't sync。這就關閉了vsync(垂直同步),現在在執行場景看看,幀速率是不是提高很多。

現在來說說什麼是垂直同步,要知道什麼是垂直同步,必須要先明白顯示器的工作原理,顯示器上的所有影象都是一線一線的掃瞄上去的,無論是隔行掃瞄還是逐行掃瞄,顯示器都有兩種同步引數——水平同步和垂直同步。

什麼叫水平同步?什麼叫垂直同步?

垂直和水平是crt中兩個基本的同步訊號,水平同步訊號決定了crt畫出一條橫越螢幕線的時間,垂直同步訊號決定了crt從螢幕頂部畫到底部,再返回原始位置的時間,而恰恰是垂直同步代表著crt顯示器的重新整理率水平。

為什麼關閉垂直同步訊號會影響遊戲中的fps數值?

道理一點都不複雜,首先我們平時執行作業系統一般螢幕重新整理率是多少?大概一般都是在85上下吧,那麼顯示卡就會每按照85的頻率時間來傳送乙個垂直同步訊號,訊號和訊號的時間間隔是上兩次螢幕更新的時間間隔。

如果我們選擇等待垂直同步訊號(也就是我們平時所說的垂直同步開啟),那麼在遊戲中或許強勁的顯示卡迅速的繪製完一屏的影象,但是沒有垂直同步訊號的到達,顯示卡無法繪製下一屏,只有等85單位的訊號到達,才可以繪製。這樣fps自然要受到作業系統重新整理率執行值的制約。

而如果我們選擇不等待垂直同步訊號(也就是我們平時所說的關閉垂直同步),那麼遊戲中作完一屏畫面,顯示卡和顯示器無需等待垂直同步訊號就可以開始下一屏影象的繪製,自然可以完全發揮顯示卡的實力。但是不要忘記,正是因為垂直同步的存在,才能使得遊戲程序和顯示器重新整理率同步,使得畫面更加平滑和穩定。取消了垂直同步訊號,固然可以換來更快的速度,但是在影象的連續性上勢必打折扣。這也正是很多朋友抱怨關閉垂直後發現畫面不連續的理論原因。

waitfortargetfps,是關於幀數限制的,你可能開了垂直同步,其實是防止撕裂。

先說撕裂,在顯示器的幀快取會被不同步的顯示卡的幀快取給替換掉,導致顯示器顯示到一半的時候,記憶體被換掉,你看到上頻是上一針的畫面,下頻是下一針的畫面,遊戲重新整理的頻率越快,撕裂就越嚴重,所以就會撕裂了。

開了垂直同步,是指將遊戲幀數鎖定到和你的顯示器重新整理頻率一樣的,因為顯示卡和顯示器的重新整理頻率不一樣。簡單的說,waitfortargetfps消耗越高,說明被壓縮的幀數越多,能用的資源越多,等待的可用的程序越多。只要關閉垂直同步就可以了。

比如說你專案能跑到60幀,但是你限定最高是30幀,那麼他就會強制壓到30幀,這中間可能會出現差值,所以需要等待。

VSync Count 垂直同步

出處 yesy10的專欄 韓小冬 unity3d中新建乙個場景空的時候,幀速率 fps總是很低 大概在60 70之間。我們可以關閉vsync 垂直同步 來提高幀速率。要知道什麼是垂直同步,必須要先明白顯示器的工作原理。顯示器上的所有影象都是一線一線的掃瞄上去的,無論是隔行掃瞄還是逐行掃瞄,顯示器都有...

VSync Count 垂直同步

unity3d中新建乙個場景空的時候,幀速率 fps總是很低 大概在60 70之間。一直不太明白是怎麼回事,現在基本上明白了。我在這裡解釋一下原因,如有錯誤,歡迎指正。在unity3d中當執行場景開啟profiler的時候,我們會看到vsync 這一項佔了很大的比重。這個是什麼呢,這個就是垂直同步,...

VSync Count 垂直同步

原文 unity3d中新建乙個場景空的時候,幀速率 fps總是很低 大概在60 70之間。一直不太明白是怎麼回事,現在基本上明白了。我在這裡解釋一下原因,如有錯誤,歡迎指正。在unity3d中當執行場景開啟profiler的時候,我們會看到vsync 這一項佔了很大的比重。這個是什麼呢,這個就是垂直...