OpenGLES图元的绘制方式有如下几种
绘制方式 | 含义 |
---|---|
GL_POINTS | 点 |
GL_LINES | 线段 |
GL_LINE_LOOP | 线圈 |
GL_LINE_STRIP | 多段线 |
GL_TRIANGLES | 三角形 |
GL_TRIANGLE_STRIP | 三角形条带 |
GL_TRIANGLE_FAN | 三角形扇 |
在绘制图形时候我们往往用到更多的是三角形的绘制,所以详细讲解三种三角形绘制的方式,点、线点绘制从字面意思也很好理解。
先直观的从下图感受这三种方式的不同
GL_TRIANGLES是以为三个点绘制一个三角形。如上图看到的V0、V1、V2绘制成一个三角形,V3、V4、V5绘制成另一个三角形。
注意:如果顶点个数不是3或者3的倍数,多出来的顶点自动忽略GL_TRIANGLE_STRIP的规律是:
构建当前三角形的顶点的连接顺序依赖于要和前面已经出现过的2个顶点组成三角形的当前顶点的序号的奇偶性(如果从0开始):
如果当前顶点是奇数:组成三角形的顶点排列顺序:T = [n-1 n-2 n].
如果当前顶点是偶数:组成三角形的顶点排列顺序:T = [n-2 n-1 n].
以上图为例,第一个三角形,顶点v2序号是2,是偶数,则顶点排列顺序是v0,v1,v2。第二个三角形,顶点v3序号是3,是奇数,则顶点排列顺序是v2,v1,v3,第三个三角形,顶点v4序号是4,是偶数,则顶点排列顺序是v2,v3,v4,以此类推。
这个顺序是为了保证所有的三角形都是按照相同的方向绘制的,使这个三角形串能够正确形成表面的一部分。对于某些操作,维持方向是很重要的,比如剔除。
注意:顶点个数n至少要大于3,否则不能绘制任何三角形。GL_TRIANGLE_FAN绘制各三角形形成一个扇形序列,以v0为起始点,[V0,V1,V2]、[V0,V2,V3]、[V0,V3,V4]。