OpenGL缓冲区、glFlush和glutSwapBuffers()

4

使用glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);glFlush()有什么区别?

使用glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);glutSwapBuffers()有什么区别?

我的意思是,这两种方式在代码执行或显示方面有什么不同吗?


2
用户将看到部分渲染的场景,使用单缓冲,因为您正在向监视器获取其像素的相同缓冲区写入数据。 - Colonel Thirty Two
1个回答

5
现代平台存在巨大的差异,即合成窗口管理器(例如Windows Vista+上的Aero)实际上拥有前缓冲区。如果您使用单缓冲区绘制,则不会发生缓冲区交换,最终结果是屏幕上将永远不会显示任何内容。
这也影响到某些混合GPU的实现(例如笔记本电脑上的Intel集成+NVIDIA独立),即使没有合成窗口管理器也是如此。在这样的系统上,缓冲区交换操作是将独立GPU的帧缓冲区复制到集成GPU以进行最终输出的操作。
在现代GPU上几乎没有理由使用单缓冲区渲染。过去必须维护两个颜色缓冲区,这也是反对三重缓冲的有力论据之一,但现在颜色缓冲区所需的内存量只占VRAM的微小部分。

谢谢 :). 我完全不知道这些。 - APD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接