【问题标题】:Spotlight issue OpenGL聚焦问题 OpenGL
【发布时间】: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是必需的。

标签: c++ opengl lighting


【解决方案1】:

解决了。问题在于 GL_SPOT_EXPONENT 因子太高(光线过于集中)以及光流的方向。

【讨论】:

    猜你喜欢
    • 2012-06-05
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    相关资源
    最近更新 更多