我正在使用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);
答案 0 :(得分:0)
我在这里没有看到任何问题,尽管我主要是DirectX程序员。我想如果你展示了所有的初始化,我们可能会帮助你。我在处理图形编程时遇到了很多奇怪的事情,所以它可能只是初始化时的一个小错误。
答案 1 :(得分:0)
您是否在代码中的其他位置调用了任何雾?这似乎是一个常见的错误。 如果你是这样的话:
glDisable(GL_FOG);
//Draw 2d scene here
glEnable(GL_FOG);
如果你不这样做,你可能会错误地初始化。