|
本帖最后由 gz0921 于 2013-3-31 16:43 编辑
垂直同步跟n重缓冲不是一个概念!而且DX下的所谓的Triple buffer跟OpenGL下的Triple buffer也不是一回事~
垂直同步,就是让front buffer的更新跟显示器的垂直刷新同步,三重缓冲(Triple buffer)则是用两个back buffer和一个front buffer来实现互相切换。两者不是同一个概念的东西。
Vsync的时候,可以是double buffer也可以是triple buffer。
vsync+double buffer 画面不会撕裂,但是有可能引入较大渲染延迟。当显卡性能较强时,显卡开工不满的情况比较严重。
vsync+triple buffer 保证画面不撕裂的同时,能够尽量减少渲染延迟。并且在显卡性能较强,渲染能力超过显示器刷新率的时候,一定程度的让显卡渲染资源不被浪费。
DX下不能实现真正的triplr buffer,取而代之的是render ahead,render ahead可以提前渲染好几帧,存在帧缓存里,帧缓存就像一个FIFO,这样FIFO不空的话,就可以有效抹平输出每一帧之间的时间差,做到帧率平稳,减少卡顿,也不会产生tearing(撕裂),但是render ahead越多,就一定会产生更严重的渲染延迟。
所以render ahead不宜过多,有些游戏把render ahead等于3的时候,也叫做Triplr buffering,严格说这是不对的。 |
|