2011-06-18 45 views
4

的OpenGL:無光一個簡單的立方體過剩OpenGL的:沒有光一個簡單的立方體過剩

嗨,我試圖研究在OpenGL和過剩的燈,但我很早就有問題。我有使燃着的立方體在自定義位置自定義相機設置驗證碼:

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

相關問題