2011-06-18 26 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

相关问题