如何避免 OpenGL 中的光旋转?

Posted

技术标签:

【中文标题】如何避免 OpenGL 中的光旋转?【英文标题】:How avoid light rotating in OpenGL? 【发布时间】:2016-01-19 14:06:43 【问题描述】:

在 OpenGL 中,我创建了一个可以旋转的简单立方体。我正在旋转立方体,而不是相机!

然后我添加了一个光源。灯光也随着立方体旋转。我怎样才能避免这种情况?

谁能告诉我何时激活哪种矩阵模式以及何时推送和弹出当前矩阵。我尝试了很多很多组合和序列,但该死的光总是(!)跟随旋转。

我并不期待一个笼统的答案,只是说这与矩阵堆栈有关。一个带有非旋转光的旋转物体的具体简短示例会很棒!

【问题讨论】:

How do I fixate a light source in OpenGL while rotating an object?的可能重复 我并不期待一个普遍的答案,只是说这与矩阵堆栈有关。一个带有非旋转光的旋转物体的具体简短示例会很棒!所以基本上你想要一个工作示例而不是解释?那就去找找吧,网上有很多。另一方面,如果您需要帮助,您可以先发布一些代码,或者告诉我们我正在旋转立方体在代码方面的含义,以便我们了解您实际在做什么跨度> @tobi303 您提到的线程中的一个答案似乎是旋转相机(我不想这样做!),而另一个答案似乎不起作用。 @NickMüller:欢迎来到 Stack Overflow。我们不是代码编写服务。我们也许能够在您的代码中找到错误,但只有在您提供代码的情况下我们才能做到这一点。简单地说,“我的代码不起作用,你能帮我写吗?”不会飞到这里。 @NickMüller:没有“OpenGL 中的旋转灯问题”。 几十年来,人们一直在使用 OpenGL 独立旋转物体和灯光。如果您无法做到这一点,那么问题显然是编写了您的代码错误。在不知道您的代码是什么的情况下,我们无法帮助您,因为您的代码可能有多种错误的方式。 【参考方案1】:

光跟随旋转物体的一个可能原因是没有为物体定义(合适的)法线向量。虽然灯光和物体的运动编程正确,但错误的法向量或没有法向量会使整个场景看起来像灯光跟随旋转的物体。

为物体定义法线向量,确定光的反射方式,可以解决问题。

【讨论】:

以上是关于如何避免 OpenGL 中的光旋转?的主要内容,如果未能解决你的问题,请参考以下文章

片段着色器中的OpenGL点精灵旋转

带有顶点/片段着色器的光。使用不同的变量。 (openGL)

Opengl相机和乘法矩阵

2D 中的 OpenGL 旋转

OpenGL中的3D旋转

如何根据对象的本地位置/旋转在 OpenGL 中移动/旋转对象