深度缓冲区工作正常,直到我添加了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);
}
答案 0 :(得分:0)
已修复!!!问题是我在Skybox Function中同时使用Depth_Test和DepthMask ...它仅适用于DepthMask