为什么我的游戏场景会显示为白色?

时间:2011-07-22 12:20:29

标签: c++ opengl

我正在使用OpenGL开发一款3D游戏。当我将一个场景更改为另一个场景时(无论是从2D菜单场景到3D游戏场景,还是从2D场景到另一个场景),第二个场景看起来都是白色的,我不知道为什么。有什么帮助吗?

这是我的渲染框架代码:

//Clear the window with current clearing color
glClearColor(0.0,0.0,0.0,0.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
gluOrtho2D(0, 800, 600, 0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

//draw 2d
if (!CurrentStage.IsNull()) 
{
    CurrentStage->Draw(false); 
}
glMatrixMode(GL_PROJECTION);
glPopMatrix();

glDisable(GL_DITHER);
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glEnable(GL_TEXTURE_2D);

//Post camera to current position.
glMatrixMode(GL_MODELVIEW);
Cameras->Post();

//draw 3d
if (!CurrentStage.IsNull()) 
{
    CurrentStage->Draw(true);
}


glDisable(GL_CULL_FACE);
glDisable(GL_DEPTH_TEST);

SwapBuffers(Core->mhDC);

//Render finish.
Sleep(0);

2 个答案:

答案 0 :(得分:0)

我在这里没有看到任何问题,尽管我主要是DirectX程序员。我想如果你展示了所有的初始化,我们可能会帮助你。我在处理图形编程时遇到了很多奇怪的事情,所以它可能只是初始化时的一个小错误。

答案 1 :(得分:0)

您是否在代码中的其他位置调用了任何雾?这似乎是一个常见的错误。 如果你是这样的话:

    glDisable(GL_FOG);

    //Draw 2d scene here

    glEnable(GL_FOG);

如果你不这样做,你可能会错误地初始化。