如何使用 OpenGL 扩展中的常量

How to use constants from OpenGL Extensions

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

基本上是的。当然,您应该首先验证您 运行 所在的设备是否支持该扩展程序,方法是检查它是否包含在 glGetString(GL_EXTENSIONS).

返回的字符串中

在那之后,唯一的小挑战是 Android 框架中没有为很多扩展定义 Java 绑定。有 GLES11Ext, which contains definitions for some old extensions that already existed at the ES 1.1 time. Then there is the much more recent GLES31Ext,其中包含 ES 3.1 的 Android 扩展包的定义。但两者之间没有任何东西,例如用于 ES 2.0 和 3.0 的通用扩展。

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

不幸的是,Android 上的 OpenGL Java 绑定中存在缺失功能的历史记录。例如,ES 3.0 绑定仍然不完整,即使它们最初是在 API 级别 18 中引入的,我们现在已经达到 API 级别 23。部分出于这个原因,您可能需要考虑在 Android.

上为严肃的 OpenGL 应用程序使用本机代码