質問: こんにちは。 現在WindowsのコンソールプログラムにopenGLで球体を描画するプログラムを書いています。 言語はc++です。(Visual Studio 2005) ですが、以下のような状況が発生してしまいました。 1.glEnable(GL_DEPTH_TEST) を使用するとライトを用いて描画したオブジェクトが真っ黒になる。 2.glEnable(GL_DEPTH_TEST) を使わないと、ライトを当てて問題なく描画されるが、やはり深度は変になる。 3.ライトを用いずに glEnable(GL_DEPTH_TEST) を用いると正常に描画される。 以上の球体の描画は glutSolidSphere もしくは gluSphere を用いました。 初期化としては、 glClearDepth(1.0f); glDepthFunc(GL_LEQUAL); glEnable(GL_DEPTH_TEST); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightfv(GL_LIGHT0, GL_POSITION, light_position); glLightfv(GL_LIGHT0, GL_DIFFUSE, white); glColorMaterial(GL_FRONT, GL_DIFFUSE); glEnable(GL_COLOR_MATERIAL); このようにしています。 以上の状況が発生する原因として考えうることは、どのようなことがあるでしょうか。 ご教授いただけると幸いです。
回答: モデルビューの設定はできていますか? レンダリング処理を glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt( 0 , 0 , 4 , 0 , 1 , 0 , 0.01 , 100 ); glutSolidSphere(1.0, 100, 100); という感じにすると正常にならないでしょうか