Spotlight问题OpenGL

时间:2016-01-04 16:51:57

标签: c++ opengl lighting

我在OpenGL库中遇到聚光灯问题。一个场景是黑色的,如果GL_SPOT_CUTOFF小于125,则看不见光。我认为这个问题涉及光源的方向,但我已经尝试了很多选项来确定聚光灯的位置和方向。这是我的代码:

const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };

glPushMatrix();
glLoadIdentity();
GLfloat spot_direction[] = { 0.0, -1.0, 0.0 ,0.0};
GLfloat spot_position[] = { 1.0,1.0,0.0,1.0 };
glLightfv(GL_LIGHT1, GL_POSITION, spot_position);
glLightfv(GL_LIGHT1, GL_AMBIENT, light_ambient);
glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT1, GL_SPECULAR, light_specular);

glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 60);
glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, spot_direction);
glLightf(GL_LIGHT1, GL_SPOT_EXPONENT, 100);
glPopMatrix();

glEnable(GL_LIGHT1);

1 个答案:

答案 0 :(得分:0)

解决。问题是GL_SPOT_EXPONENT因子太高(光太聚焦)和光流方向。