OpenGL ES 3. 图元组装方式

大家好,接下来将为大家介绍OpenGL ES 3. 的图元组装方式。

OpenGL ES 中支持的绘制方式大致分 3 类,包括点、线段、三角形,每类中包括一种或多种具体的绘制方式,各种具体绘制方式的说明如下所列。


 1、点绘制:GL_POINTS。
其将传入渲染管线的一系列顶点单独进行绘制,具体情况如下图所示。

 OpenGL ES 3. 图元组装方式_第1张图片

 

2.1、线绘制:GL_LINES。
其将传入渲染管线的一系列顶点按照顺序两两组织成线段进行绘制,具体情况如下图所示。要注意的是,若顶点个数为奇数,管线会自动忽略最后一个顶点。

OpenGL ES 3. 图元组装方式_第2张图片

 

2.2、线绘制:GL_LINE_STRIP。
其将传入渲染管线的一系列顶点按照顺序依次组织成线段进行绘制,具体情况如下图所示。

OpenGL ES 3. 图元组装方式_第3张图片

 

2.3、线绘制:GL_LINE_LOOP。
其将传入渲染管线的一系列顶点按照顺序依次组织成线段进行绘制。与 GL_LINE_STRIP 方式的区别是,其将最后一个顶点与第一个顶点相连,形成线段环,具 体情况如下图所示。

OpenGL ES 3. 图元组装方式_第4张图片

 

3.1、三角形绘制:GL_TRIANGLES。
其将传入渲染管线的一系列顶点按照顺序每 3 个组织成一个三角形进行绘制,具体情况如下图所示。从图中可以看出,顶点 2、5 以及顶点 1、3 位置是相 同的,这是因为左下侧和右上侧的两个三角形有共用顶点。
此绘制方式下,多个三角形有共用顶点时会造成冗余。如果不希望冗余可以用后面介绍的其他绘制方式完成绘制。

OpenGL ES 3. 图元组装方式_第5张图片

 

3.2、三角形绘制:GL_TRIANGLE_STRIP。
其将传入渲染管线的一系列顶点按照顺序依次组织成三角形进行绘制,最后实际形成的是一个三角形条带。若共有 N 个顶点,则将绘制出 N-2 个三角形,具体情况如下图所示。通过比较可以发现,绘制同样的图形,此方式比 GL_TRIANGLES 方式节省顶点空间。

OpenGL ES 3. 图元组装方式_第6张图片

 

3.3、三角形绘制:GL_TRIANGLE_FAN。
其将传入渲染管线的一系列顶点中的第一个顶点作为中心点,其他顶点作为边缘点绘制出一系列组成扇形的相邻三角形,具体情况如下图所示。

OpenGL ES 3. 图元组装方式_第7张图片

 

public void drawSelf()
{ 
    GLES30.glUseProgram(mProgram);   
    ……   
    GLES30.glEnableVertexAttribArray(maColorHandle);
    GLES30.glDrawElements(GLES30. GL_TRIANGLES,iCount, //三角形的组装方式
    GLES30.GL_UNSIGNED_BYTE,mIndexBuffer); //用索引法绘制图形
}

最后,欢迎大家一起交流学习:微信:liaosy666 ; QQ:2209115372 。

你可能感兴趣的:(OpenGL,基础)