我正在尝试模仿opengl中的手电筒。基本上我希望聚光灯与相机处于同一位置,并指向相机所指向的相同方向。
这是我的代码:
gluLookAt (xAt, yAt, zAt, xLookAt, yLookAt, zLookAt, 0, 1, 0);
light_pos [4] = {xAt, yAt, zAt, 1.0};
glLightfv (GL_LIGHT0, GL_POSITION, light_pos);
spotDir [] = {xLookAt - xAt, yLookAt - yAt, zLookAt - zAt};
glLightfv (GL_LIGHT0, GL_SPOT_DIRECTION, spotDir);
我已经调用了初始化光线,并且我已经计算了所有物体的表面法线。
现在上面的代码类型有效,当移动相机时,聚光灯随之而来。然而,当我将相机移近物体时,物体会照射到较少的光线上。当我将相机移得更远时,物体会变得更亮。
我希望相反的事情发生 - 相机离物体越远,应该有更少的光照在物体上。这是怎么做到的?或者这不是opengl聚光灯的行为吗?
答案 0 :(得分:1)
所以我调查了这一点,显然修改光线的衰减会产生正确的结果。希望这有助于其他任何偶然发现这一点的人。