【Unity】VSync垂直同步


最近在做UI頁面拖拽優化的時候,發現一個問題,是列表還是項目中的地圖,在拖拽過程中,幾秒鍾就可能頓一下閃一下。查了查,可能是因為垂直同步關閉導致的畫面撕裂,看了看Edit--Project Settings--VSync Count,確實是關掉了垂直同步。
 

 

 

垂直同步在我印象里一直是用於優化CPU耗時的條目之一,但對垂直同步開關的影響反而一知半解。https://zhuanlan.zhihu.com/p/127974083 因此了解垂直同步在做什么,垂直同步開關各有什么影響,就很重要。
 
垂直同步:
1.刷新率和幀率
刷新率指的是顯示器的刷新率,60Hz就是屏幕一秒會刷新60次畫面。
緩沖區是顯卡的緩沖區,顯卡渲染好一張畫面就會把畫面存儲在顯卡的顯存中,儲存之后再去渲染下一張畫面,顯卡每秒鍾產生120張畫面也就是1/120秒就有一張畫面放進緩沖區,下一個1/120秒,新的畫面會給取代掉,這也就是幀數的概念。
顯示器刷新率和顯卡幀率不同步就會畫面撕裂。
 
2.垂直同步
打開垂直同步后,當顯示器尚未完成一幀畫面刷新時候,前后緩沖區不允許交換,顯示器刷新完一幀畫面時,緩沖區才可以進行交換,不會在上一幀畫面未顯示完全就開始顯示下一幀造成畫面撕裂,也就是顯卡畫面刷新速度等待顯示器刷新速度,使畫面更流暢。
但是,幀率比顯示器刷新率高很多的情況下,為了將顯示器的刷新速度和顯卡向緩沖區寫入畫面的時間保持同步,就要增加延遲,延遲“過快的生成畫面”向顯示器的輸出,就會造成一定程度影像傳輸和操作反饋的延遲。這對需要快速反應的競技類游戲是致命的。
 
3.關閉VSync是CPU優化最直接的一個方法,在Profiler中可以看到VSync占了很大比重
 
4.VSync關閉之后可以提高幀速率,但是畫面可能會不連續。
 
 
只要有顯卡,有顯示器的設備都涉及到垂直同步,查看NVIDEIA控制面板可以看到垂直同步選項,而且有其介紹

 

 

 
關閉垂直同步
允許GPU不受刷新率限制進行渲染,並可以在單個刷新間隔對多個渲染幀進行掃描輸出,會產生畫面撕裂
開啟垂直同步
限制GPU最大渲染速率為顯示器的最大刷新率,並防止撕裂,但是由於渲染速率受限,延時可能較長且性能較低。另外,如果GPU渲染速率低於刷新率
 
所以開關垂直同步各有其利弊,要依項目運行需求來開關,在游戲中當然是可以給用戶提供這個開關以選擇性能和畫面連續性。
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM