1

伙计们,这怎么可能。但在我之前的项目中,情况并非如此。而且我不知道我是如何尝试这种效果的。请告诉我真相。

4

1 回答 1

4

第 18.050 节,如何让我的灯移动或不移动并控制灯的位置?

首先,您必须了解 OpenGL 是如何转换灯光位置的。

当您通过调用glLightfv( GL_LIGHTn, GL_POSITION, ... ). 如果您稍后更改 ModelView 矩阵,例如在下一帧的视图发生更改时,灯光位置不会被 ModelView 矩阵的新内容自动重新转换。如果你想更新灯光的位置,你必须再次通过调用来指定灯光的位置glLightfv( GL_LIGHTn, GL_POSITION, ... )

...

  • 如何使我的灯光位置相对于我的眼睛位置保持固定?怎么做大灯?

您需要在眼睛坐标空间中指定您的光线。为此,请将 ModelView 矩阵设置为标识,然后指定您的灯光位置。要制作头灯(看起来位于或靠近眼睛并沿视线发光的灯),请将 ModelView 设置为标识,将灯位置设置为(或靠近)原点,并将方向设置为负 Z 轴。

当灯光相对于眼睛的位置是固定的时,您不需要为每一帧重新指定灯光位置。通常,您在程序初始化时指定一次。

于 2011-04-06T19:18:44.623 回答