所以我一直在阅读很多关于 openGL 和 gpus 以及一般图形的内容,并且半频繁地提到三重缓冲可以提供免费的性能提升。我知道它为什么有帮助;实际上,您可以进行垂直同步,而不受帧速率选择的限制,例如 60 或 30 或 20 或 15 等,因此您实际上可以达到 55fps。但这真的有代价吗?直观地说,我希望三重缓冲可以将输出延迟一帧,从而为所有内容添加一个非常小的延迟。
问问题
24195 次
2 回答
6
在 55 FPS 时,一帧略低于 20 毫秒。所以它不是完全免费的,但它几乎总是物有所值。
但是,在 15 FPS 时,它可能非常明显。(顺便说一句,这是一台 POS 笔记本电脑。对我来说,大多数 3D 游戏的运行速度都差不多。有些甚至更慢。)
有些人注意到延迟,尤其是在较低的帧速率下,有时三重缓冲不能像预期的那样工作。(特别是在 OpenGL 中,硬件不能很好地支持的东西可能会退回到(可能非常慢)软件仿真。这些天应该不是什么大问题,但是嗯。)所以大多数使用三重缓冲的程序也包括一个禁用它的选项。您可能要考虑这样做。
于 2010-06-21T06:14:07.213 回答
6
引用 Akenine-Möller 和其他人的优秀“实时渲染”一书 ( http://www.realtimerendering.com/ ),第 835 页,这几乎总结了您在回答自己的问题时已经提出的建议问题,考虑滞后:
“与双缓冲相比,三重缓冲有一个主要优势。使用它,系统可以在等待垂直回扫时访问挂起的缓冲区。使用双缓冲,交换可能会停止图形管道。[...]三重缓冲的缺点是延迟增加到一整帧。这种增加延迟了对用户输入的反应,例如击键和鼠标或操纵杆移动。
于 2010-06-21T06:46:04.550 回答