Opengl GLU颜色缓冲位和GLU深度缓冲位的用途是什么?

Opengl GLU颜色缓冲位和GLU深度缓冲位的用途是什么?,opengl,Opengl,作为一个OpenGL初学者,我想知道他们做什么,为什么需要这些。比如在电话里 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); GL\u COLOR\u BUFFER\u BIT和GL\u DEPTH\u BUFFER\u BIT不是函数,它们是常量。您可以使用它们告诉glClear()要清除哪些缓冲区-在您的示例中,深度缓冲区和“当前已启用颜色写入的缓冲区”。您还可以传递GL_ACCUM_BUFFER_位以清除累积缓冲区和/或GL_模具

作为一个OpenGL初学者,我想知道他们做什么,为什么需要这些。比如在电话里

 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

GL\u COLOR\u BUFFER\u BIT
GL\u DEPTH\u BUFFER\u BIT
不是函数,它们是常量。您可以使用它们告诉
glClear()
要清除哪些缓冲区-在您的示例中,深度缓冲区和“当前已启用颜色写入的缓冲区”。您还可以传递
GL_ACCUM_BUFFER_位
以清除累积缓冲区和/或
GL_模具缓冲区
以清除模具缓冲区

在使用库时,常量的实际值对您来说并不重要-重要的实现细节是每个常量的二进制表示形式不会相互重叠。正是这个特性让您可以将多个常量的按位或按位传递给对
glClear()
的单个调用


查看以了解更多详细信息。

调用glClear(GL\u COLOR\u BUFFER\u BIT | GL\u DEPTH\u BUFFER\u BIT)可清除OpenGL颜色和深度缓冲区(或任何其他缓冲区或缓冲区组合)。OpenGL是一个状态机,最好的做法是从一张干净的白板开始每一帧。

我在阅读这篇文章时偶然发现了这个问题,并想为任何困惑的人添加一些细节。我看到这两个变量是常量,表示位值中的选项

glClear()方法需要知道要清除的缓冲区类型。但是,有许多缓冲区,例如颜色和深度缓冲区等()

通过使用位来表示选项,通过执行OR操作来设置多个选项变得更加容易


有关更多详细信息,请查看本“位操作”教程,即“位标志何时最有用?”部分:

我在询问这些常量为什么要使用它们我想了解更多有关它们的信息,请!!文档告诉我GL_COLOR_BUFFER_位表示当前为颜色写入启用的缓冲区。GL_DEPTH_BUFFER_位表示深度缓冲区。没有关于它们的更多信息。。。我想你可以看看
gl.h
。在我的机器上,
GL\u COLOR\u BUFFER\u BIT
0x00004000
GL\u DEPTH\u BUFFER\u BIT
0x0000100
。还有什么需要知道的吗?@Carl Norum:那些OpenGL标记(常量)的数值写在规范中@Mohamed Amged:传递给glClear的值在OpenGL驱动程序中由类似以下代码进行计算:GLClearOfDriver(GLbitfield mask){if(mask&GL\u COLOR\u BUFFER\u BIT)clear\u COLOR\u BUFFER;if(mask&GL\u DEPTH\u BUFFER\u BIT)clear\u DEPTH\u BUFFER;…};真的没有什么比这更重要的了。那些可以通过glClear的标记是正交(位)向量(在维基百科上查找正交向量以了解这意味着什么)。@CarlNorum,这里有一个完美的解释。干杯