我想在我的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();
但无论我使用什么价值的职位, 照明根本没有改变......
答案 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 list(1.0
)。可能不是你想要的。
您需要使用真实数组和glLightfv()
来指定灯光位置:
GLfloat pos[] = { 50.0, 0.0, 0.0, 1.0 };
glLightfv( GL_LIGHT0, GL_POSITION, pos );