OpenGL 缓冲区、glFlush 和 glutSwapBuffers()

标签 opengl buffer glut

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

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);glutSwapBuffers()

所谓差异,是指代码执行或显示方面的差异?

最佳答案

现代平台上存在巨大差异,从某种意义上说,合成窗口管理器(例如 Windows Vista+ 上的 Aero)有效地拥有前缓冲区。如果您绘制单缓冲,则永远不会发生缓冲区交换,最终结果是屏幕上不会显示任何内容。

即使没有合成窗口管理器,这也会影响混合 GPU 的某些实现(例如笔记本电脑上的 Intel 集成 + NVIDIA 离散)。在这样的系统上,缓冲区交换操作是将离散 GPU 的帧缓冲区复制到集成 GPU 中以进行最终输出。

几乎没有理由在现代 GPU 上使用单缓冲渲染。过去,必须维护两个颜色缓冲区会占用大量内存,这也是反对三重缓冲的一个令人信服的论据,但如今,颜色缓冲区所需的内存量只是 VRAM 的一小部分。

关于OpenGL 缓冲区、glFlush 和 glutSwapBuffers(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25949228/

相关文章:

OpenGL 最大 FBO 和 PBO

c#:与设备通信期间数据缓冲区发生奇怪的偏移

linux - 如何在 Linux 上的 OpenGL 中创建一个窗口而不是使用 GLUT?

c++ - GLUT 回调函数的问题

c++ - 如何暂停这个opengl程序?

java - 光滑的 2d unicode 字体有问题

javascript - 如何在文件中找到一系列字节并将它们替换为另一个缓冲区?

c++ - 可以使用带有 memcpy 的 istream

opengl - 如何在 GTX 560 及更高版本上使用 OpenGL 进行立体 3D?

opengl - 正交到透视调整计算