0

我有一个结构 QUAD,它存储了 4 个指向 4 个 VECTOR3D(包含 3 个浮点数)的指针,以便我可以绘制四边形网格。据我了解,每当我绘制网格时,我也需要法线来正确地对网格进行光照/着色,并且当它是铺设在平原上的网格时,使用每个面的法线相对容易。

当我在 XZ 坐标上放置 2 x 2 四边形网格并尝试将其中心 (0,0,0) 提升到某个点时,例如 (0, 4, 0) 它将开始形成真正的 3D 形状,那么我需要再次计算法线。我很难理解计算法线的方式和内容。正如预期的那样,3D 形状的阴影就像它仍然是一个平面网格,所以它不代表真实的形状。一种解释说我需要计算每个顶点而不是每个面的法线。这是否意味着我需要计算网格所有角的法线?一旦我有法线,我会怎么做?我仍在使用旧的 glBegin glEnd 方法,但现在我觉得我需要使用 DrawArray 方法。我很困惑,我很确定我没有发出太多声音,但我非常感谢你的帮助。

4

1 回答 1

1

如果您需要平坦的表面,那么您的法线将是四边形平面的法线。如果您需要“看起来柔和”的表面,您需要混合(阅读并观看这个很酷的简单视频)法线 - 这将添加某种渐变。

于 2012-11-22T01:33:41.623 回答