在OpenGL中启用深度测试后,我的整个屏幕都是空白的(恢复为清晰的颜色) - 为什么?

dan*_*007 1 c++ opengl glut

在我使用OpenGL和GLUT的C++图形应用程序中,我想通过启用深度测试

glEnable(GL_BLEND);
glEnable(GL_DEPTH_TEST);
Run Code Online (Sandbox Code Playgroud)

但是,这两行代码清除了我的屏幕,现在只是清晰的颜色.我想知道为什么.

我只是应该有一些原始的实心球和立方体.

Dre*_*all 10

听起来你已经忘记清除深度缓冲区,因此深度缓冲存储器中存在任何预先存在的垃圾,因此无法进行深度测试.尝试将GL_DEPTH_BUFFER_BIT添加到glClear()调用中,如下所示:

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

祝好运!

  • 那个`glClearDepth`调用设置什么值来清除它呢? (2认同)