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
),比三角扇更常用。
我正在尝试在我的应用程序中使用 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
),比三角扇更常用。