【发布时间】:2016-01-05 23:37:23
【问题描述】:
我在 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);
【问题讨论】:
-
听起来物体距离光线不够近,无法受到它的影响。如果它适用于 > 125 的截止值,但不能低于 125,那么您的对象显然在光锥之外。
-
注意:您使用的 OpenGL 已被弃用近十年。除非您从事历史项目,否则请学习现代 OpenGL - 否则您就是在浪费时间。
-
@GraphicsMuncher 这个版本的openGL是必需的。