此文介紹了遊戲設定中常見的垂直同步和三重緩衝兩個選項的含義,力圖讓看文章的玩家都能明白這兩個選項的含義,並能清楚判斷是否需要開啓這兩個選項
垂直同步
垂直同步英文是 VSync
通常遊戲會由顯卡繪製遊戲幀(每幀就是一個遊戲畫面),然後顯卡將幀提交給顯示器進行顯示。但是遊戲的幀率(每分鐘產生的幀數量,既 FPS) 和 顯示器刷新率(每分鐘最多更新的顯示畫面數量,既刷新率)是不同的
如果遊戲的 FPS 小於顯示器的刷新率這不會有任何問題。但如果 FPS 高於顯示器刷新率就可能出現顯示器還沒顯示完上一幀的畫面就接收到了新畫面需要顯示,就可能會產生被撕裂的錯誤畫面。所謂垂直同步就是讓顯卡不要工作的太快,主動降低 FPS 以保持和顯示器刷新率一致來避免產生撕裂的錯誤畫面
它工作原理也很簡單,當幀被提交給顯示器顯示時,顯卡會等待顯示器通知顯示完成,得到通知顯卡才進行下一幀的渲染。但這顯然引入了新的問題,顯卡主動等待會造成遊戲延遲,這對一些動作類遊戲是不可接受的,但對延遲不敏感的遊戲直接啓用垂直同步是最簡單解決問題的方法(不過此類遊戲大多沒有這個選項,它們通常默認就只以垂直同步的方式工作,另外也有一些自己鎖幀主動將 FPS 鎖死在一個比較低的頻率下)
三重緩衝
三重緩衝英文是 Triple Buffering
現代顯卡通常會有兩個緩衝區以保證只把完整的幀提交給顯示器以避免顯示器閃爍(a b 兩緩衝區,其中一個提交給顯示器,另外一個存儲最新生成的圖像,在一個畫面完整生成後,交換 a b 兩緩衝區的角色)
所謂三重緩衝就是再額外增加一個緩衝區。現在顯卡不需要等待垂直同步由新的緩衝區來等待。顯卡可以一直保持工作分別向 a b 兩個原本的緩衝區寫入圖像,因爲一直保持工作所以可以正常的接收玩家的控制指令。新加的緩衝區負責把最後的完整畫面同步到自己緩衝區中並提交給顯示器以及等待顯示器顯示完成(這種工作模式顯卡多產生的幀會被丟棄掉)
需要注意在 DirectX 中並不原生支持三重緩衝,它有個類似的預渲染隊列,這種方式它不會丟棄顯卡多生成的幀而是存儲到隊列延後依次顯示,這只會增加遊戲延遲沒有任何好處,本喵認爲這應該是API設計的錯誤。但不幸的是一些 DirectX 遊戲錯誤的把它當作的三重緩衝所以啓用了只會反而導致遊戲更加延遲,對於 DirectX 遊戲你只有自己去嘗試打開或關閉此選項來體驗效果
此外三重緩衝會佔據更多顯存,所以也要考慮自己顯存是否足夠
總結
- 通常應該先關閉垂直同步和三重緩衝,如果沒有畫面撕裂就沒必要修改設定。這樣對資源消耗也是最小的
- 如果畫面撕裂了,必須開啓垂直同步,但依據情況確定是否開三重緩衝
- 首先在開啓垂直同步時,通常應該先嘗試開啓三重緩衝,這樣得到的體驗會更好(不用擔心選錯,看到這個選項直接開好了,因爲非控制敏感的遊戲通常不會給這個選項讓你選,有這個選項的遊戲都是希望你在開啓垂直同步時優先啓用此功能以得到更少的遊戲控制延遲)
- 如果遊戲依然很卡,關閉三重緩衝。這可能是因爲三重緩衝佔用了太多顯存,也可能是 DirectX 遊戲錯誤的把預渲染隊列當成了三重緩衝
- 如果還是很卡,那說明你的顯卡不足以支持現在玩的遊戲只有升級硬件或調低其它遊戲特效來嘗試
最後對於不差錢的用戶,可以關閉垂直同步,直接花錢換購電競顯示器。這些顯示器比通常的顯示器有更高的刷新率,所以根本就不需要垂直同步這些東西