Android顶点阵列对象?

时间:2012-03-26 07:21:38

标签: android opengl-es vertex-array-object vao

我正在编写一些Android代码,以准备我计划开发的图形密集型应用程序。我从2004年开始没有做任何OpenGL。我偶然发现http://www.opengl.org/wiki/Vertex_Array_Object并且PC平台的多个来源声称使用顶点数组对象是最好的渲染方式。

我的目标平台是采用Android 2.3的摩托罗拉Atrix 2智能手机。

我似乎找不到与GL_OES_vertex_array_object对应的函数的include。我想调用类似于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;

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

在某些设备上,未实现VAO扩展。首先使用

检查OpenGl ES版本
gl.glGetString(GL10.GL_VERSION);

然后检查扩展程序是否可用

gl.glGetString(GL10.GL_EXTENSIONS);

它应该包含:GL_OES_vertex_array_object

有关扩展程序的详细信息:OpenGL extensions available on different Android devices

有关Android上VAO的更多信息,请检查:OES_vertex_array_object and client state

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