4

我正在编写一些 android 代码,为我计划开发的图形密集型应用程序做准备。自 2004 年以来我没有做过任何 OpenGL。我偶然发现了http://www.opengl.org/wiki/Vertex_Array_Object和 PC 平台的多个来源声称使用 vertex-array-objects 是最好的渲染方式。

我的目标平台是搭载 Android 2.3 的 Motorola Atrix 2 智能手机。

我似乎找不到对应于 GL_OES_vertex_array_object 的函数的包含。我想调用类似于 glGenVertexArraysOES 的函数。

如何在 Android 中使用 VAO?

我目前的包括

import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.CharBuffer;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;

import javax.microedition.khronos.opengles.GL10;
import javax.microedition.khronos.opengles.GL11;
4

2 回答 2

4

VAOs是相当新的,不包含在 OpenGL|ES 1.0 或 1.1 中(不要与 混淆Buffer Objects,或者有时称为VBOs)。您必须导入和使用 OpenGL|ES 2.0,并且通过这样做,您必须对图形代码进行一些更改,以通过着色器而不是glVertexPointer类似的方法进行绘制。从外观上看,Android 中没有GL20Ext内置类或类似的东西,我会在网上寻找绑定或使用 NDK 自己编写它们。

于 2012-03-26T07:41:32.620 回答
1

在某些设备上,没有实现 VAO 扩展。首先检查 OpenGL ES 版本

gl.glGetString(GL10.GL_VERSION);

然后检查扩展是否可用

gl.glGetString(GL10.GL_EXTENSIONS);

它应该包含:GL_OES_vertex_array_object

有关扩展的更多信息:OpenGL 扩展可用于不同的 Android 设备

有关 android 检查 VAO 的更多信息:OES_vertex_array_object 和客户端状态

编辑:更改答案以正确回答问题。谢谢你的评论。

于 2012-03-26T07:28:02.460 回答