2011-07-22 9 views
1

私はOpenGLで3Dゲームを開発しています。あるシーンを別のシーンに変更すると(2Dメニューシーンから3Dゲームシーンに、または2Dシーンから別の2Dシーンに変更されても)、2番目のシーンは白く見えますが、なぜかわかりません。どんな助け?ゲームのシーンが白く表示されるのはなぜですか?

これは私のレンダリングフレームワークコードです:

//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

2Dまたは3Dシーンのみを描画すると、シーンが白く表示されますか?あるシーンから別のシーンに切り替えるとシーンが白く表示されますか?私はちょうどあなたが意味していることを確かめたかったのです。 – Ryan

+4

問題を再現しようとしましたが、私はCurrentStageもカメラも持っていません。それ以上の情報がなければ、gluOrtho2Dは宣言されておらず、そうではないIntsを取ることが期待されているという野生の推測をしなければなりません(あなたが与えたintは二重に変換されず、doubleをdoubleその結果、 "pixel" 0,0で描くものはすべて画面全体を埋めるでしょう)。私たちが問題を再構築するのを助けるために、http://sscce.org/を作成して、CurrentStageとカメラが何であるか、またはそれらを使わずにSSCCEを作成しようとしていることを具体的に伝えてください。 –

答えて

0

私は主にDirectXのプログラマーだが、私は、ここですべての問題を見ていませんよ。あなたの初期設定をすべて表示したら、私たちはあなたを助けることができるかもしれないと思います。私はグラフィックスプログラミングを扱うときに奇妙な出来事がたくさんあるので、初期化するときの小さなエラーかもしれません。

0

あなたのコードのどこかに霧がかかっていますか?それは共通のエラーであるようです。 あなたはこの試行している場合:あなたは、あなたは間違って何かを初期化することができるされていない場合は

glDisable(GL_FOG); 

    //Draw 2d scene here 

    glEnable(GL_FOG); 

を。

関連する問題