我正在努力理解 OpenGL .C 代码中的一些要点:
glutInitDisplayMode()和对该缓冲区做了什么?glClear()glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glClear(GL_COLOR_BUFFER_BIT);
Run Code Online (Sandbox Code Playgroud)
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)立即清除颜色和深度分量。