在OpenGL中,我展示了一个简单的模型。当我启用深度缓冲区时,
glEnable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
一切都消失了。我读过这篇OpenGL常见问题解答,但没能帮到我。
我的视角设置是:angle=45deg
,near=1
,far=40
,我把模型放在(0,0,0)
,并将我的视点放在(0,0,4)
。如果没有Z缓冲,我可以看到模型。
有什么可能出了问题?
你是否确保清除了深度缓冲区?
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
^^^^^^^^^^^^^^^^^^^
如果上述方法无效,请检查gluPerspective、glFrustum或glOrtho函数中的近平面。如果将其设置为0,深度缓冲似乎无法工作。
我已经尝试了几乎所有的方法,但无法解决重叠问题。我将近平面值从0.0f更改为0.01f,现在的结果正如所需。
GL_CULL_FACE
,请检查模型顶点的绕序,是(LH)
还是(RH)
。GL_DEPTH_TEST
,则检查视锥体与模型视图投影矩阵以及相机位置和视角方向的平面。GL_BLEND
,请检查对象在z-buffer
中的渲染顺序。
GL_CULL_FACE
,那么可能是您的顶点的“绕序”有问题;并且您必须清除GL_COLOR_BUFFERT_BIT | GL_DEPTH_BUFFER_BIT)
... - Francis Cugler