【问题标题】:Android Vertex Array Objects?Android顶点数组对象?
【发布时间】:2012-03-26 07:21:38
【问题描述】:

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

我的目标平台是搭载 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;

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      在某些设备上未实现 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

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

      【讨论】:

      • 他问的是 VAO,而不是 VBO。
      • 哦,对了。对不起。至少扩展的东西在这里仍然适用。
      猜你喜欢
      • 2015-08-05
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 2012-08-03
      • 1970-01-01
      相关资源
      最近更新 更多