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