【发布时间】:2011-04-06 18:58:49
【问题描述】:
伙计们,这怎么可能。但在我之前的项目中,情况并非如此。而且我不知道我是如何尝试这种效果的。请告诉我真相。
【问题讨论】:
-
很抱歉,我不知道您的问题是什么,或者您在问什么。请尝试对您的问题进行更详细的描述(代码示例、图表等)
伙计们,这怎么可能。但在我之前的项目中,情况并非如此。而且我不知道我是如何尝试这种效果的。请告诉我真相。
【问题讨论】:
Section 18.050, How can I make my light move or not move and control the light position?:
首先,您必须了解 灯光位置由 OpenGL。
灯光位置由 当前顶部的内容 ModelView 矩阵栈当你 通过调用指定灯光位置 到
glLightfv( GL_LIGHTn, GL_POSITION, ... )。 如果您稍后更改 ModelView 矩阵,例如当视图改变时 对于下一帧,灯光位置 不会自动重新转换 ModelView 的新内容 矩阵。如果你想更新 光的位置,你必须再次 通过调用指定灯光位置 到glLightfv( GL_LIGHTn, GL_POSITION, ... )。...
- 如何让我的灯光位置相对于我的眼睛保持固定 位置?如何制作大灯?
您需要指定眼睛中的光线 坐标空间。为此,请设置 ModelView 矩阵来标识,然后 指定您的灯光位置。做一个 前照灯(一种看起来像 位于眼睛处或附近,并且 沿着视线发光),设置 将 ModelView 设置为标识,设置 在(或附近)的灯光位置 原点,并将方向设置为 负 Z 轴。
当灯的位置固定时 相对于眼睛,你不需要 重新指定每个灯的位置 框架。通常,您指定一次 当你的程序初始化时。
【讨论】:
GL_LIGHT_POSITION。定位灯应通过调用glLightfv( GL_LIGHT<n>, GL_POSITION, ... ); 设置,其中<n> 表示灯号。此答案已被编辑以显示正确的语法。