关于opengl:glEnable(GL_DEPTH_TEST)-未呈现任何内容

glEnable(GL_DEPTH_TEST) - nothing rendered

在OpenGL中,我显示一个简单的模型。启用深度缓冲区时,

1
2
3
glEnable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);

一切都消失了。我阅读了此OpenGL常见问题解答,但对我没有帮助。

我的透视图设置是:angle=45degnear=1far=40,我将模型放置在(0,0,0)上,而我的眼睛则放置在(0,0,4)上。没有Z缓冲区,我可以看到模型。

怎么了?


确定要清除深度缓冲区吗?

1
2
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
                              ^^^^^^^^^^^^^^^^^^^


如果其他答案不起作用,请尝试在注释中提到的user886079

If the above doesn't work, check your near plane in the gluPerspective, glFrustum, or glOrtho function. Depth buffering doesn't seem to work if it is set to 0.

我几乎尝试了所有方法,但无法解决重叠的问题。我把接近值设为0.0f。我将其更改为0.01f,现在的结果就是所需的结果。


如果以上回答无效,请尝试以下操作:

  • 如果启用了GL_CULL_FACE,请检查模型顶点的缠绕顺序。 (LH)(RH)
  • 如果启用了GL_DEPTH_TEST;然后对照模型视图投影矩阵以及相机的位置检查平截平面