GL_POSITION不起作用

时间:2014-05-07 16:03:29

标签: c++ opengl 3d position lighting

我想在我的OpenGl代码中添加一个Light源。 我已将以下代码添加到我的init函数中......

glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glLightf(GL_LIGHT0, GL_POSITION,(50.0,0.0,0.0,1.0));

此外,我画了一个四边形:

glBegin(GL_QUADS);
glNormal3f(0.0,0.0,1.0);
glVertex3f(0.0,0.0,20.0);
glVertex3f(0.0,10.0,20.0);
glVertex3f(10.0,10.0,20.0);
glVertex3f(10.0,0.0,20.0);
glEnd();

但无论我使用什么价值的职位, 照明根本没有改变......

1 个答案:

答案 0 :(得分:3)

glLightf(GL_LIGHT0, GL_POSITION,(50.0,0.0,0.0,1.0));
                                ^^^^^^^^^^^^^^^^^^
在此上下文中,

(50.0,0.0,0.0,1.0)evaluate to the last expression in the list1.0)。可能不是你想要的。

您需要使用真实数组和glLightfv()来指定灯光位置:

GLfloat pos[] = { 50.0, 0.0, 0.0, 1.0 };
glLightfv( GL_LIGHT0, GL_POSITION, pos );