以下内容略有燒腦。 幀緩沖器本質上就是顯存中一組内存數據(緩沖區),用來存儲一幀畫面每個像素點的數據。顯卡将緩沖區數據依次輸出到顯示器,當全部輸出完畢之後,發出一個垂直同步信号,然後輸出到顯示器,再發出垂直同步信号,如此反複。實際上整個垂直同步,雙重,三重緩沖概念,本質上就是“幀緩沖器數據輸出規則”
緩沖區的數據,是由顯卡 的光栅操作單元 生成的。假設我們的顯卡速度很快,每秒生産的幀數肯定要超過顯示器刷新率。那麼在實際數據處理過程中,緩沖區的數據,在被輸出之前,就被顯卡不斷的刷新重寫。但是緩沖區并不是“先清空再寫入數據”,這太沒有效率,而是采用“新數據覆蓋老數據”的方式
我們來假設,緩沖區已經有一副完整的幀畫面(A幀),然後顯卡生成了下一幀畫面(B幀),新一幀的數據開始寫入緩沖區,寫到一半的時候,垂直同步信号來了,于是緩沖區的數據被輸出到顯示器。但問題是,這時緩沖區的數據,是由一半A幀和一半B幀數據合成的。因此最終顯示器上顯示出來的畫面就不是一副完整的畫面,這就是“畫面撕裂”現象出現的原因
好啦,我們現在需要解決“畫面撕裂”問題,我們怎麼解決呢?有聰明的同學說了,這還不簡單,讓幀緩沖區裡的數據始終保持一副完整的畫面不就可以了嘛。沒錯,這就是“垂直同步”的原理
實際運作是這樣的,當顯卡生成了一副完整畫面并寫入了幀緩沖區之後,暫停!,開始等待垂直同步信号,當得到垂直同步信号後,再繼續渲染下一幀寫入緩沖區。這樣“一個畫面一個垂直同步信号,畫面和信号同步起來”,就可以保證在緩沖區的數據始終是一副完整的畫面,不會出現前後幀混合的問題
但是,世界上哪裡有那麼容易的好事
開啟垂直同步會帶來兩個問題
第一,幀數下降。一個顯而易見的原因是,如果刷新率是60HZ,那麼顯卡如果需要等待垂直同步信号才生成下一幀,那麼幀數就不會超過60幀/s。但是這還不是問題的全部,如果你的顯卡性能并不足以保證每秒60幀是速度呢?那麼就會出現在一個垂直同步信号周期内,渲染不出一幀畫面的情況,那麼顯卡就會将上一幀畫面輸出,而延遲1個周期才輸出下一幀畫面。如果不開垂直同步你的幀數有50幀的話,開了垂直同步,可能就會隻有40幀左右,甚至更少
第二,操作延遲。原因和幀數下降是基本一樣的。你的操作決定了顯卡如何生成下一幀畫面,而如果這一幀畫面需要2、3個垂直同步信号周期才能輸出到顯示器上,延遲感就會非常的明顯。但是和幀數下降問題不同,即便你顯卡速度很快,能夠在開啟垂直同步的情況下依然保持60FPS,這個操作延遲問題也依然存在。原因在于顯卡在等待垂直同步過程中,不生成新幀,而你的操作卻是連續的。這樣連續的操作卻不能生成連續的幀,操作就會出現延遲。
同學們會說,卧槽,垂直同步什麼爛玩意不如不開嘛
沒錯,所以垂直同步的替代方案,三重緩沖就登場啦
三重緩沖是個啥東西呢?其實原理很簡單。在垂直同步方案中,我們讓顯卡再收到垂直同步信号之前“暫停”新幀的生成,這就是造成各種問題的原因。那麼,要解決問題,就需要顯卡不停的生成新幀,沒有暫停
我們再回顧一下幀緩沖器的原理,一塊顯存中的固定區域暫存幀數據,要保持畫面不撕裂,就要保證緩沖區的數據是完整的,但是保證數據完整就不能随時向緩沖區内寫數據。那麼我們多搞幾個緩沖區不就得了嘛
所以,所謂的三重緩沖,說白了,就是我們有3個幀緩沖器!除去我們正常使用的,向顯示器輸出信号的緩沖區(A區),我們另外再開辟2個緩沖區(B1、B2區),當A區已滿,等待垂直同步信号的時候,顯卡生成的下一幀畫面,寫入到B1區;如果還需要再生成下一幀,則寫入B2區;如果再再需要下一幀,則寫入B1區。總之,在得到垂直同步信号之前,幀數據總是寫入B1或者B2區内,當獲得垂直同步信号之後,将最新的一幀寫入A1區,輸出到顯示器。當然,這隻是原理,實際上并沒有固定用處的緩沖區,哪個緩沖區是最新生成的一幀,哪個就可以作為A區輸出幀畫面數據
這樣,我們首先解決了幀數下降的問題,由于顯卡不需要暫停等待信号才生成新幀,所以理論上幀率就和你不開垂直同步是一樣的。幀率不會降低,操作的延遲也就不會有那麼明顯。雖然最終得到的還是和刷新率一樣的畫面幀數,但由于畫面和操作都是連續的,因此也不會造成額外的操作延遲。
看到這裡,現在大家已經能夠理解,為什麼要開“垂直同步”和“三重緩沖”了吧
又有一位同學問了,難道三重緩沖就這麼完美嘛?當然不是,這世界上任何東西都是有代價的。三重緩沖的問題是顯存占用非常大。這很好理解,原本隻需要1個的緩沖區,現在變成三個,顯存占用率自然也就是三倍。如果你再開個高分辨率,抗鋸齒什麼的,那顯存占用率那是噌噌往上漲的
所以,要獲得完美的效果,大顯存的高端顯卡是必不可少的,換句話說,掏銀子才是王道!
以上就是關于守望先鋒裡“垂直同步”和“三倍緩沖”的詳解,希望大家看完後會對自己有幫助。想要獲取更多資訊請關注全球電競網,新鮮資訊,一手掌握,精彩内容,不容錯過。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!