【发布时间】:2014-03-18 19:59:57
【问题描述】:
我正在展示一个场景,一切看起来都很好。 当我缩放一个对象时,我注意到照明变得不同(随着对象变大而变暗)。我知道我可以重新计算法线,但是有什么方法可以告诉 opengl 自动执行此操作?我正在使用 opengles 2。
非常感谢。
【问题讨论】:
我正在展示一个场景,一切看起来都很好。 当我缩放一个对象时,我注意到照明变得不同(随着对象变大而变暗)。我知道我可以重新计算法线,但是有什么方法可以告诉 opengl 自动执行此操作?我正在使用 opengles 2。
非常感谢。
【问题讨论】:
对象的缩放应该通过模型矩阵进行,因此不需要改变对象的原始法向量。使用模型矩阵变换模型时,还必须相应地变换法线。见http://www.songho.ca/opengl/gl_normaltransform.html。
【讨论】:
即使您应用缩放,法线也不会改变。这意味着您不必每次都重新计算法线。问题很可能出现在您计算的正常矩阵中。确保正常矩阵(即模型视图矩阵的逆矩阵和转置矩阵)具有缩放参数。
干杯!!!
【讨论】: