GL_TRIANGLE_FAN first (center) vertex normal
因此,如果我要用GL_TRIANGLE_FAN绘制三棱锥,我将为中心提供一个顶点,为底部提供三个顶点(实际上是四个顶点,但您知道我的意思吧?!)。
我可以计算金字塔的所有三个面(侧面)的面法线。
问题是,如果我只有一个调用来绘制该顶点,该如何为每个面(侧面)的第一个(中心)顶点分配不同的法线?
基本上,我需要为构成三角形的所有三个顶点分配相同的面法线,而对接下来的两个三角形分配相同的面。
但是,当我只调用一次顶点绘制函数时,不知道如何为第一个(中心)顶点分配法线三次(甚至可以使用GL_TRIANGLE_FAN吗?!)。
将顶点法线设置为glNormal3f(0.0f,0.0f,1.0f)不好(尽管看起来正确),因为那样在顶点之间进行颜色插值是不正确的。
一个普遍的误解是顶点只是位置。 顶点是位置,法线,纹理坐标等的完整集合。 如果仅更改顶点向量的一个属性,则得到的顶点将非常不同。
因此,不可能只有一个顶点,而只有几个法线。 这与定义顶点的方式相矛盾。