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

Edu*_*edo 0 c opengl glut

我正在努力理解 OpenGL .C 代码中的一些要点:

  • 这个颜色缓冲区是什么?
  • 下面的代码中的glutInitDisplayMode()和对该缓冲区做了什么?glClear()
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glClear(GL_COLOR_BUFFER_BIT);
Run Code Online (Sandbox Code Playgroud)

Ara*_*kis 5

OpenGL 中有多种缓冲区。您提到的颜色缓冲区保存render target. 渲染目标可以是离屏缓冲区或窗口的一部分,或者窗口的后台缓冲区,具体取决于情况。

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB)初始化当前窗口的渲染目标。GLUT_DOUBLE意味着双缓冲以避免闪烁。GLUT_RGB意味着,我们需要颜色内存,没有 Alpha 通道。

glClear(GL_COLOR_BUFFER_BIT)意味着,只有缓冲区的颜色分量会被清除。你可能会问有什么区别。原因是,渲染目标可以分为多个缓冲区,例如颜色缓冲区和深度缓冲区。仅当您调用 时,深度缓冲区才会被清除glClear(GL_DEPTH_BUFFER_BIT),您也可以通过组合它们来glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)立即清除颜色和深度分量。