问题描述
深度缓冲区工作正常,直到我添加了SkyBox,现在它隐藏了我的所有世界(场景),并且仅当hiddenDepth = False时才渲染天空框... 问题显然是天空箱,因为我通过删除天空箱对其进行了检查...
id key value_B
1500 left L20
1500 right R20
1501 left L21
1051 right R21
1502 left L22
1502 right R22
这是我的SkyBox
static void display()
{
if (hiddenDepth)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
else {
glClear(GL_COLOR_BUFFER_BIT);
}
glPushmatrix();
glScalef(15500,15500,15500);
glTranslatef(0,0.5,0);
drawskyBox();
glPopMatrix();
glScalef(40,40,40);
drawWorld();
}
隐藏深度呼叫(按键时为真,为假)
glPushmatrix();
glPushAttrib(GL_ENABLE_BIT);
glEnable(GL_TEXTURE_2D);
gldisable(GL_DEPTH_TEST);
glDepthMask(GL_FALSE);
gldisable(GL_BLEND);
// Render the quad
glPopAttrib();
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glEnable(GL_BLEND);
glPopMatrix();
}
InitGrapics
if (hiddenDepth)
{
// Now do z buffer
glEnable(GL_DEPTH_TEST);
glDepthRange(nearPlane,farPlane);
glClearDepth(farPlane);
}
主要功能
static void initGraphics (void)
{
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
解决方法
已修复!!!问题是我在Skybox Function中同时使用Depth_Test和DepthMask ...它仅适用于DepthMask