什么是 OpenGL 中的颜色缓冲区?
What is a color buffer in OpenGL?
我很难理解 OpenGL .C 代码中的一些要点:
- 这个颜色缓冲区是什么?
- 下面代码中的
glutInitDisplayMode()
和 glClear()
对这个缓冲区做了什么?
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glClear(GL_COLOR_BUFFER_BIT);
OpenGL 中有几种缓冲区。您提到的颜色缓冲区包含 render target
的颜色分量。渲染目标可以是屏幕外缓冲区或 window 的一部分,或 window 的后台缓冲区,这取决于。
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB)
初始化当前 window 的渲染目标。 GLUT_DOUBLE
表示,双缓冲以避免闪烁。 GLUT_RGB
意思是,我们需要没有 alpha 通道的颜色记忆。
glClear(GL_COLOR_BUFFER_BIT)
表示只有缓冲区的Color分量会被清除。你可能会问有什么区别。原因是,渲染目标可以分成多个缓冲区,例如,颜色缓冲区和深度缓冲区。只有调用glClear(GL_DEPTH_BUFFER_BIT)
才会清除深度缓冲区,也可以通过glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
将它们组合起来一次性清除颜色和深度分量。
我很难理解 OpenGL .C 代码中的一些要点:
- 这个颜色缓冲区是什么?
- 下面代码中的
glutInitDisplayMode()
和glClear()
对这个缓冲区做了什么?
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glClear(GL_COLOR_BUFFER_BIT);
OpenGL 中有几种缓冲区。您提到的颜色缓冲区包含 render target
的颜色分量。渲染目标可以是屏幕外缓冲区或 window 的一部分,或 window 的后台缓冲区,这取决于。
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB)
初始化当前 window 的渲染目标。 GLUT_DOUBLE
表示,双缓冲以避免闪烁。 GLUT_RGB
意思是,我们需要没有 alpha 通道的颜色记忆。
glClear(GL_COLOR_BUFFER_BIT)
表示只有缓冲区的Color分量会被清除。你可能会问有什么区别。原因是,渲染目标可以分成多个缓冲区,例如,颜色缓冲区和深度缓冲区。只有调用glClear(GL_DEPTH_BUFFER_BIT)
才会清除深度缓冲区,也可以通过glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
将它们组合起来一次性清除颜色和深度分量。