整个渲染过程应该分为两个大的部分:
1) material synthesis(材质综合),包括纹理和表面属性。
2) illumination(光照),包括各种光照模型和渲染模型。
在这里主要涉及到的内容是illumination。
在OpenGL中,若需要计算光照模型(light model),就需要在指定顶点(vertex)的时候,为顶点添加两个属性:
1) 顶点的颜色;
2) 顶点出的法向向量;
这两个属性的值直接参与光照模型的计算公式中。下面就顺便提一下如何计算顶点处的法向向量:
首先计算任意一个三角平面的法向量。可以通过三角形平面中三个顶点的坐标计算出这个面的法向量:
A _
| _
| _
| _
C---B
上面画的三角形的三个顶点是以顺时针顺序排列的,与之对应的是左手坐标系。在OpenGL中采用的左手坐标系,而在Direct3D采用的是右手坐标系。根据三个顶点计算三角形面法向量的计算公式是:
normal=cross( (B-A), (C-A) )
在单个三角形平面中,三个顶点处的法向量就是此平面的法向量,但是很多情况下,几何体的一个顶点被多个平面共享,那顶点的法向量如何处理呢?一般情况下,我们通过计算共有该点的所有的三角形平面的法向量的平均值而获得。计算公式是:
normal=cross( (B-A), (C