【问题标题】:OpenGL: Light source that follows the camera?OpenGL:跟随相机的光源?
【发布时间】:2011-04-06 18:58:49
【问题描述】:

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

【问题讨论】:

  • 很抱歉,我不知道您的问题是什么,或者您在问什么。请尝试对您的问题进行更详细的描述(代码示例、图表等)

标签: opengl light


【解决方案1】:

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 轴。

当灯的位置固定时 相对于眼睛,你不需要 重新指定每个灯的位置 框架。通常,您指定一次 当你的程序初始化时。

【讨论】:

  • 嗯,FAQ的代码示例不正确。 OpenGL 从未接受过任何令牌GL_LIGHT_POSITION。定位灯应通过调用glLightfv( GL_LIGHT<n>, GL_POSITION, ... ); 设置,其中<n> 表示灯号。此答案已被编辑以显示正确的语法。
  • @radical7: 很好。已编辑。
  • @drewster:已修复。
猜你喜欢
  • 1970-01-01
  • 2011-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-04
  • 2017-08-13
  • 2017-08-28
相关资源
最近更新 更多