GL_COLOR_BUFFER_BIT和GL_DEPTH_BUFFER_BIT的目的是什么?

Moh*_*ged 15 opengl

作为一名OpenGL初学者,我想知道他们做了什么以及为什么需要这些.例如在通话中

 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Run Code Online (Sandbox Code Playgroud)

Car*_*rum 15

GL_COLOR_BUFFER_BITGL_DEPTH_BUFFER_BIT不是函数,它们是常数.您可以使用它们来告诉glClear()您要清除哪些缓冲区 - 在您的示例中,深度缓冲区和"当前启用颜色写入的缓冲区".您也可以传递GL_ACCUM_BUFFER_BIT清除累积缓冲区和/或GL_STENCIL_BUFFER_BIT清除模板缓冲区.

在使用库时,常量的实际值对您来说无关紧要 - 重要的实现细节是每个常量的二进制表示不会相互重叠.正是这种特性允许您将多个常量的按位OR传递给单个调用glClear().

查看glClear()文档以获取更多详细信息.

  • 我问这些常数为什么我们使用它们我想了解更多有关它们的信息! (4认同)
  • @CarlNorum,这里有一个完美的解释.干杯.[我们为什么要清除GL_DEPTH_BUFFER_BIT](http://stackoverflow.com/questions/19469194/why-do-we-have-to-clear-depth-buffer-in-opengl-during-rendering/19469291#19469291) (4认同)
  • @2am 谢谢你,这就是我所期待的。不是“检查文档”。 (2认同)