FPS, VSync, Triple Buffering
????? FPS
????? FPS代表frames per second,中文意思是每秒顯示幀數,它描繪了當前系統的繪制更新頻率,它是一個運行時特征。
????? 它的值受到多個因素的影響:畫面的變化速度,畫面的復雜程度,顯卡的性能等。
????? 系統的FPS與畫面的變化速度相同是最優的,低于畫面的變化速度則會使得畫面卡頓,高于畫面的變化速度則表明出現了不必要的繪制,浪費系統資源。
????? 顯示器
????? CRT顯示器必須不斷刷新,頻率應在60Hz到100Hz之間,否則屏幕上的熒光會漸漸變暗,導致屏幕閃爍。
????? LCD顯示器無需不斷刷新(它的顯示原理不要求補給能量就能維持畫面的亮度),相反,LCD顯示器強調響應時間,一般應在8ms之內完成畫面渲染,否則如果畫面的變化速度太快,顯示效果會很模糊。
????? VSync 與 Triple Buffering
????? VSync代表Vertical Synchronization,中文的意思是垂直同步。它的基本思想是將顯卡與顯示器的刷新頻率通過一個稱為VSync的信號同步起來,當VSync信號起來時,顯卡才將繪制好的幀推送給顯示器。
??????VSync技術的引入主要是為了解決“Tearing”(撕裂)現象。
????? 首先,說明一下“Tearing”(撕裂)現象:假設系統的FPS是100,顯示器的刷新頻率是75Hz,顯卡將比顯示器快1/3;這意味著,在一個刷新周期之內,顯卡將寫入4/3的幀數據,也就是說,下一幀的1/3覆蓋在前一幀之上;當然,隨著系統運行,1/3這個比例會發生變化,1/3,2/3,1,1/3,循環;這種幀與幀之間的不完全覆蓋重合現象就是“Tearing”(撕裂)現象。
????? VSync技術通過一個定期同步信號,同步顯卡與顯示器,從而避免了“Tearing”(撕裂)現象。
????? VSync一般依賴于緩沖技術,否則:在系統的FPS低于顯示器刷新頻率的情況下,仍然會有“Tearing”(撕裂)現象,這個不難理解;在系統的FPS高于顯示器刷新頻率的情況下,顯卡會將一部分時間浪費在等待上,因為沒有可用的內存用于繪制。
????? 但是VSync技術也有缺點,如果系統的FPS低于顯示器刷新頻率,那么系統的FPS將迅速下降為顯示器刷新頻率的分數倍上,嚴重低于系統潛能,出現“Stutter”現象(指系統忽快忽慢,卡頓非常明顯),這是因為復雜系統的FPS不可能一直高于顯示器刷新頻率,如果它的FPS一旦稍稍低于顯示器刷新頻率,那么實際的FPS將下降更多,畫面會突然卡頓。
????? 出現這一問題的原因如下:假設顯示器的刷新頻率是75Hz,系統的FPS為50,顯卡將比顯示器慢1/3;這意味著,在第一個刷新周期之內,顯卡只能在后備緩沖區中繪制第一幀的前2/3,在第二個刷新周期內,顯卡接著繪制第一幀的后1/3,剩余時間空閑(因為后備緩沖區已滿);這樣看來,兩個刷新周期才能看到一個完整的幀,系統的實際FPS將下降為37.5。
????? Triple Buffering(三重緩沖)可以緩解這一問題:假設顯示器的刷新頻率是75Hz,系統的FPS為50,顯卡比顯示器慢1/3;這意味著,在第一個刷新周期之內,顯卡只能在后備緩沖區中繪制第一幀的前2/3,在第二個刷新周期內,顯卡接著繪制第一幀的后1/3,然后繪制第二幀的前2/3,在第三個刷新周期之內,顯卡先繪制第二幀的后1/3,然后繪制第三幀的前2/3;這樣看來,三個刷新周期可以看到兩個完整的幀,系統的FPS仍然為50。
??????如果打算對顯卡進行基準測試,應該關閉VSync技術,否則會拉低顯卡的實際頻率。
總結
以上是生活随笔為你收集整理的FPS, VSync, Triple Buffering的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Path菜单
- 下一篇: Oracle statspack 基本使