1.4 三角形条带
OpenGL应用程序一个简单的提速的方法是三角形或者多边形转换成三角形条带方式存储。当这个模型是直接从NURBS数据或者其他常规几何体中产生,然后直接连接起来组合成长条带。判断第一个三角形可能啊顺时针或者逆时针饶序,然后确定所有后面三角形的饶序是相同的(如图1.10)。扇面三角形也应该有一个正确的饶序,但是所有其他三角面也是相同方向(图1.11)。
常规网格,三角形条带应该并排排列如图1.12。目标是是它总条数的数量最少,因此尽量避免使用‘弧形’三角面(也叫做singleton strips)做为条带的一部分。
1.4.1 Greedy Tri-stripping
把模型转换为三角条带一个非常简单的方式叫做gready tri-stripping。一个比较早期的gready算法,叫IRIS GL,允许交换顶点改变邻近边的饶序。在OpenGL,然而,唯一的方式相当于交换重复顶点并创建一个退化的三角形,这比原来的顶点交换的开销要大。
关于OpenGL,一个更好的算法是选择一个多边形,转换为三角形,然后转化多边形后后面的边与后面的三角形共享这个边。得到一个第一个多边形的第一个边开始形成条形路径。这个路径添加到这个模型的最后一个边(如图1.13)。
这个三角形条带不能产生一个折边,因此边上的顶点必然会有冗余。一个硬边两侧边的两个三角形对应不同的法线。更为先进的三角拆分算法是尽量保持多边形的所有三角形在一起,详细的说明请参考refer to Evans et al. (1996).