我正在编写一些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;
答案 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
编辑:更改答案以正确回答问题。感谢评论。