了解glNormal3f

时间:2012-10-31 00:22:17

标签: c++ opengl graphics

我无法理解glNormal3f,我知道它适用于'normalize'顶点的'normals'......或类似的东西,但我无法理解顶点的'normal'是什么。 你能解释一下这个功能吗?我无法理解openGL中“正常”的意思......

2 个答案:

答案 0 :(得分:7)

顶点的“法线”是与顶点“垂直”的矢量。在数学中,“正常”是“垂直”的概括。对于多边形,此“法线向量”垂直于多边形,并且对于其所有顶点都是相同的。如果要覆盖具有非常小的三角形的曲面,则可以为多边形的每个顶点指定不同的法线向量的一个原因。在这种情况下,您不希望三角形的三个顶点的法向矢量都相同。

现在这个法线向量用于什么?在OpenGL中启用照明时,典型应用程序用于着色计算。法向矢量可以确定来自光源的光是否撞击表面以及光线与表面形成的角度。然后,这可以用于确定表面是否被遮蔽或包含镜面高光,例如。

答案 1 :(得分:5)

glNormal的调用将向最后发射的顶点发射法线向量。顶点法线通常被计算为入射到顶点的面的法线的归一化平均值。面的法线是矢量,因此它们垂直于面部描述的平面。

这个功能已被弃用,你真的应该选择一本好的/教程或书。

另请参阅Vertex Normal及相关条目。

如果您不使用glVertex*和相关的glNormal*功能,您应该使用什么?着色器和VBO的。有一个look at this问题。