作为OpenGL初学者,我想知道他们做了什么以及为什么需要这些。例如在呼叫GL_COLOR_BUFFER_BIT和GL_DEPTH_BUFFER_BIT的用途是什么?
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
作为OpenGL初学者,我想知道他们做了什么以及为什么需要这些。例如在呼叫GL_COLOR_BUFFER_BIT和GL_DEPTH_BUFFER_BIT的用途是什么?
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
GL_COLOR_BUFFER_BIT
和GL_DEPTH_BUFFER_BIT
不是函数,它们是常数。您可以使用它们告诉glClear()
您希望清除哪些缓冲区 - 在您的示例中,深度缓冲区和“当前启用彩色写入的缓冲区”。您也可以通过GL_ACCUM_BUFFER_BIT
来清除累积缓冲区和/或GL_STENCIL_BUFFER_BIT
以清除模板缓冲区。
当使用库时,常量的实际值对你无关紧要 - 重要的实现细节是每个常量的二进制表示不相互重叠。正是这种特性使您可以将多个常量的按位或运算结果传递给glClear()
。
查看glClear()
documention了解更多详情。
调用glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)将清除OpenGL颜色和深度缓冲区(或任何其他缓冲区或缓冲区组合)。 OpenGL是一个状态机,所以用干净的平板开始每个帧是一个好习惯。
我在问这些常量为什么我们使用它们我想了解更多关于它们的信息! – 2011-03-29 23:08:19
@穆罕默德 - 你是什么意思更多的信息?文档中有你需要知道的一切。你有更具体的问题吗? – 2011-03-29 23:09:19
文档告诉我GL_COLOR_BUFFER_BIT 指示当前为写入颜色 启用的缓冲区。 GL_DEPTH_BUFFER_BIT 指示深度缓冲区。 – 2011-03-29 23:12:38