我有一个三角形网格,我正在尝试计算法线,以便在绘制网格时应用它们。我正在使用立即模式(当我有时间了解它们如何工作时,可能会更改为顶点数组)并使用 GL_TRIANGLE_STRIP 绘制网格。
我在计算顶点法线时遇到问题。更精确地决定在计算中使用哪些相邻顶点,然后决定何时设置这些法线。考虑一下:
1_2
|/| Supposedly a square where the numbers represent the vertex number in a
3 4 triangle strip.
我知道您必须计算属于一个平面的 2 个向量的叉积才能使平面正常。所以在那个例子中,顶部三角形的法线可以通过 (2-1)x(3-1) 计算,第二个三角形的法线可以通过 (2-4)x(3-4) 计算。在立即模式下绘制三角形条时如何应用法线?
我所做的是在设置 vtx 1 时设置第一个法线,在设置 vtx 4 时设置第二个法线,在设置 vtx 5 时设置第三个法线,等等。但这会产生问题,因为您显然最终会为每个法线设置不同的法线三角形的顶点(当它们都应该相同时)。例如,三角形 |2,3,4| 只会有具有正确法线的顶点 4(因为对于顶点 2 和 3,法线将是第一个三角形的那个)。
那么应该怎么做呢?有没有办法,或者我需要改变GL_TRIANGLES
吗?(我现在不想停止使用即时模式,因为我没有时间)。