Android OpenGl ES 三角扇

Android OpenGl ES Triangle Fan

我正在尝试在我的应用程序中使用 OpenGL,因此已将粘贴的 this 代码复制到我的项目中。它工作得很好,但我想画三角扇而不是只画那个三角形。我该如何更改代码才能做到这一点?

opengl es中不直接存在三角扇。如果你想创建三角形风扇,你需要使用三角形和标记来绘制。这是一个很好的教程,介绍如何进行这项工作。 http://www.learnopengles.com/tag/triangle-strips/

使用三角扇没有什么神奇之处。您只需将作为第一个参数传递给绘制调用的原始类型更改为 GL_TRIANGLE_FAN。例如,您的教程代码当前有此调用:

GLES20.glDrawElements(GLES20.GL_TRIANGLES, indices.length,
        GLES20.GL_UNSIGNED_SHORT, drawListBuffer);

您改为:

GLES20.glDrawElements(GLES20.GL_TRIANGLE_FAN, indices.length,
        GLES20.GL_UNSIGNED_SHORT, drawListBuffer);

现在您只需添加更多的顶点和索引,就可以开始了。

OpenGL定义三角形扇的方式,第一个点是所有三角形共享的。如果指定顶点:

v0 v1 v2 v3 v4 v5 v6 ...

生成的三角形是:

v0 v1 v2
v0 v2 v3
v0 v3 v4
v0 v4 v5
v0 v5 v6
...

一个相关的原始类型是三角带(GL_TRIANGLE_STRIP),比三角扇更常用。