如何使用OpenGL Extensions中的常量

时间:2015-11-15 23:52:43

标签: java android opengl-es-2.0

我想在我的Android OpenGL ES 2.0应用中使用扩展程序GL_OES_texture_float。正如所说here,在khronos注册表中,引入了常量FLOATHALF_FLOAT_OES。我可以像其他任何一样使用这些常量吗?或者在我做这件事之前我还有什么必须做的吗?

1 个答案:

答案 0 :(得分:1)

基本上是的。当然,您应首先通过检查它是否包含在glGetString(GL_EXTENSIONS)返回的字符串中来验证您运行的设备是否支持该扩展。

之后,唯一的挑战是Android框架中没有为许多扩展定义Java绑定。有GLES11Ext,其中包含ES 1.1时已存在的一些旧扩展的定义。然后是更新的GLES31Ext,其中包含适用于ES 3.1的Android扩展包的定义。但两者之间没有任何关系,例如适用于ES 2.0和3.0的常见扩展。

只要您只需要常量来使用扩展名,那就没什么大不了的。您可以在扩展规范中查找值,并在自己的代码中定义符号常量。对于需要新入口点的扩展来说,问题更多。然后,您几乎必须使用本机代码来访问这些功能。

不幸的是,Android上的OpenGL Java绑定缺少功能的历史。例如,ES 3.0绑定仍然不完整,即使它们最初是在API级别18中引入的,我们现在已达到API级别23。部分由于这个原因,您可能需要考虑在Android上使用本机代码来处理严肃的OpenGL应用程序。