OpenGL中的深度缓冲区

DHa*_*ick 9 opengl

我试图使用OpenGL绘制一系列矩形,但是一些应该出现在矩形下方的矩形出现在它上面.

启用我正在使用的深度功能

glClearDepth(1.0f);
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);
Run Code Online (Sandbox Code Playgroud)

我在每次平局开始时都使用gluLookAt.这是问题的图像.蓝色矩形的y值高于绿色矩形.

替代文字 替代文字

正如您在顶部图像中看到的,一些绿色矩形出现在蓝色矩形上方.知道为什么会这样,我能做些什么来修复它?它可能与我正在绘制矩形的顺序有关吗?

Rhy*_*man 12

清除颜色缓冲区时,还要清除深度缓冲区吗?

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

你确定图像不正确吗?其中一些绿色方块实际上
看起来比蓝色方块高.


Chr*_*her 7

您在所使用的窗口系统中启用了深度缓冲区吗?例如,使用过剩可能需要:glutInitDisplayMode(GLUT_DEPTH | ....);

  • 在`QGLFormat`对象中,您应该能够使用`depth`和`setDepth`方法检查深度缓冲区是否已启用. (3认同)