什么是 OpenGL 中的颜色缓冲区?

What is a color buffer in OpenGL?

我很难理解 OpenGL .C 代码中的一些要点:

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)将它们组合起来一次性清除颜色和深度分量。