我正在尝试在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聚光灯的行为方式吗?