垂直同步 小科普 「垂直同步」究竟是什麼?

2021-10-14 17:39:55 字數 1991 閱讀 5050

遊戲玩家們對於遊戲設定裡的「垂直同步」(v-sync)選項一定不陌生,但卻很少知道這個功能的具體作用,或許你聽其他玩家說過不要開啟這個選項之類的話,但問他原因卻不一定答得上來。

要明確「垂直同步」的概念,我們首先需要了解兩個名詞:「逐行掃瞄」和「緩衝區」。

逐行掃瞄

對於60hz的顯示器來說,並不是指其螢幕一秒閃60次畫面,而是指這台顯示器每秒可以逐行掃瞄60次,你看到的幀是一行一行畫出來的,而不是一張一張閃過的。只是因為這個速度非常快,以至於人眼無法直接觀測到。

緩衝區顯示卡渲染好一張畫面之後,就會把這張畫面儲存在視訊記憶體中,然後去渲染下一張畫面。如果顯示卡每秒鐘可以產生 120 張畫面會發生什麼呢?結果就是每 1/120 秒就會有一張畫面進入緩衝中,下乙個 1/120 秒,下一張畫面就會把上一張給取代掉。

那麼現在問題就來了,如果顯示卡每秒產生 120 張畫面,但顯示器每秒只讀取 60 張,這會出現什麼問題呢?

答案就是:畫面撕裂。

因為顯示器提取畫面的時候會從上到下一行一行(逐行掃瞄)把畫面顯示出來,本來要 1/60 秒才能顯示完,然而顯示了一半(1/120 秒)下一張畫面就塞進來了,這時候顯示器並不會停止工作,而是囫圇吞棗地把上一張畫面的一半與下一張畫面都顯示出來,這樣的結果呈現在人的眼前就是一種撕裂感。

這種情況下,「垂直同步」的作用就顯現出來了。開啟垂直同步後,顯示卡的渲染速度強制鎖定在最高每秒 60 張畫面(即鎖定60幀),這樣顯示器每次讀取的時候都可以順利讀完。

但這樣就萬無一失了嗎?並不是。

最大問題就是:卡頓。

因為顯示卡的渲染速度被鎖定,但實際輸出的畫面量卻沒有減少,造成的結果就是畫面不連貫,呈現到人眼,就造成了我們常見的「卡頓」。

你會可能發現不少遊戲的設定選項中還有乙個「雙重緩衝」的開關,也即是說,顯示卡依舊每秒渲染 120 張畫面,第一張存在前緩衝區,第二張存在後緩衝區。顯示器來讀取畫面的時候按順序先從前緩衝區那裡讀完,再從後緩衝區那裡讀,這樣似乎就解決了卡頓的問題,但其實又引發了新的問題。

新的問題就是我們深惡痛絕的:延遲

一台60hz的顯示器一秒鐘重新整理60次畫面,每次畫面的間隔時間就是16.6ms,如果畫面被推遲到了下一幀出現,幀率在那一瞬間就會突然降低,而且延遲也多了十幾毫秒。

這點延遲看似不高,但對於需要快速反應的競技類遊戲來說幾乎是致命的,這也是為什麼很多玩家建議關閉垂直同步的原因所在了。

總而言之,如果你的顯示卡渲染速度達不到每秒 60 張,畫面就不流暢(所謂遊戲達到60幀才算流暢的說法便由此而來);超過了每秒 60 張,又面臨撕裂、卡頓和延遲的問題。只有顯示卡渲染速度超過每秒 60 張,顯示器重新整理率也高於 60 hz,而顯示卡渲染速度又低於顯示器重新整理率的時候,畫面撕裂的問題才能徹底解決。

這也就是為什麼如今144hz甚至240hz的電競顯示器成為職業選手標配的原因了。

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 這一項佔了很大的比重。這個是什麼呢,這個就是垂直...