2013-10-16 18 views
2

使用GL ES 2可以使用Android的Vertex Array Objects ES扩展吗?使用GL ES 2可以使用Android的Vertex Array Objects ES扩展吗?

我期望在名为GLES20Ext的类中找到VAO函数,就像我可以在GLES10Ext中找到ES 1扩展一样,但我不能。

是否可以使用Android的Java GL ES 2绑定中的VAO?

如果不是,使用GLES2中最简单的方法是使用NDK桥接扩展调用?这种绑定是否已经存在?

要求ES 3或ES 3支持尚未广泛使用是否可行?

+1

理论上,这应该是可以从NDK(给定Android API级别9 - 2.3+)实现的。问题是EGL的实际Java绑定很糟糕 - 它们隐藏了'eglGetProcAddress(...)'这是暴露任何供应商扩展或任何Android GLES2.0绑定发生的事情所必需的是很多)。你需要做的是在受支持的扩展列表中查找“GL_OES_vertex_array_object”,然后使用NDK获取过程地址......您可以使用Java来调用它,这样做。 –

+0

简单地返回一个函数指针到Java代码并没有让你走得很远 - 你仍然需要编组参数,抛出异常,并完成(自动生成的)函数包装器所做的所有其他工作。动态生成字节码是一种选择,但在Android上并不简单。使用NDK组件支持任意扩展更容易(也可能更高效)。 (如果你知道一个聪明的方法,AOSP总是会欢迎高质量的补丁。) – fadden

回答

3

没有GLES20Ext.java。这可能是一个疏忽。

您将需要通过NDK创建自己的Java绑定。

GLES 3.0是比较新的,并且在大多数设备上尚不可用。目前的建议是针对2.0,并进行运行时检查以利用3.0功能when they are available