glEnable(GL_DEPTH_TEST) - 没有渲染

时间:2012-04-06 10:44:57

标签: opengl

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

glEnable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
一切都消失了。我阅读了this OpenGL FAQ,但它对我没有帮助。

我的视角设置为:angle=45degnear=1far=40,我将模型放在(0,0,0),我将注意力放在(0,0,4)。如果没有Z缓冲区,我可以看到模型。

可能出现什么问题?

3 个答案:

答案 0 :(得分:49)

您确定清除了深度缓冲区吗?

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

答案 1 :(得分:6)

如果其他答案无效,请尝试user886079

中提及的comment内容
  

如果上述方法不起作用,请检查gluPerspective,glFrustum或glOrtho函数中的近平面。如果设置为0,则深度缓冲似乎不起作用。

我几乎尝试过所有事情,但无法解决重叠问题。我把近值0.0f。我将其更改为0.01f,结果现在是它需要的结果。

答案 2 :(得分:0)

如果以上答案无法解决,请尝试以下方法:

  • 如果您启用了GL_CULL_FACE,请检查模型顶点的绕线顺序。 (LH) vs (RH)
  • 如果启用了GL_DEPTH_TEST;然后根据模型视图投影矩阵以及相机的位置和位置检查平面到平截头体。查看方向。
  • 如果启用了GL_BLEND;与z-buffer
  • 相比,检查对象的呈现顺序