2011-06-18 12 views
4

OpenGLのためノーライト:シンプルなGLUTキューブのOpenGL:シンプルなGLUTキューブ

こんにちはための無光が、私は、OpenGLとGLUTでライトを勉強しようとしているが、私はかなり早期に問題を抱えています。私は、カスタムカメラの設定でカスタム位置に点灯キューブを作るために、このコードを持っている:

void testApp::draw(){ 
    static float amb[] =  {0.4, 0.4, 0.4, 0.0}; 
    static float dif[] =  {1.0, 1.0, 1.0, 0.0}; 
     
    float light_diffuse[] = {1.0, 0.0, 1.0, 1.0}; 
    float light_position[] = {-1.0, 1.0, 1.0, 0.0}; // i tried a lot of positions here! 
     
    // set camera 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
    gluLookAt(0, 200, 1200, 0,0,0, 0,1,0); 

    // set lights 
    glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); 
    glLightfv(GL_LIGHT0, GL_POSITION, light_position); 
    glEnable(GL_LIGHT0); 
    glEnable(GL_LIGHT1); 
    glEnable(GL_LIGHTING); 
    glMaterialfv(GL_FRONT, GL_AMBIENT, amb); 
    glMaterialfv(GL_FRONT, GL_DIFFUSE, dif); 

    // draw scene 
    ofScale(50, 50, 50); 
    glPushMatrix(); 

    glutSolidCube(2); 

    // close everything 
    glPopMatrix(); 
    glDisable(GL_LIGHT0); 
    glDisable(GL_LIGHT1); 
    glDisable(GL_LIGHTING); } 

私は問題は光位置だと思うだけで、黒キューブ、ノーライトを参照してください、私は多くのことを試してみましたポジションのそれは動作しません:ブラックキューブ。

+0

同じ問題がキューブをテクスチャ化しようとしましたが、結果はありませんでした。 – HiTECNOLOGYs

+1

これは役に立ちますhttp://www.opengl.org/resources/features/KilgardTechniques/oglpitfall/ –

+0

本当に良いリンクのための@rajに感謝しました。私はそれを知らなかった! – nkint

答えて

5

あなたは本当にあなたの立方体から離れています。それをより小さくし、より近くに移動してください。または、照明を次のように変更してください。

float light_diffuse[] = {100.0, 0.0, 100.0, 100.0}; 
float light_position[] = {-100.0, 100.0, 1.0, 0.0}; 

キューブにはほとんど光の影響がありません。 teapotの使用を検討してください。

+0

大丈夫、それは完全に動作します。しかし私は理由を理解していませんでした:私はキューブ(今はティーポット^ __ ^)が0,0,0でワールド座標にあるように翻訳がありませんでした..ライトポジションはこのポイント近くにあるべきですか? – nkint

+0

中心は(0,0,0)にありますが、面は中心から100単位離れています。あなたの光はそれに影響を与えるほど強くありませんでした。 –

+0

とてもきれいになりました、ありがとう – nkint

関連する問題