在安卓上使用OpenGL ES 3?

4

我下载了Android NDK r9并编译了一个示例应用程序。我的Galaxy Nexus智能手机已升级到Android 4.3。

如何在程序中找出我的设备是否支持OpenGL ES 3?


仿真器:https://dev59.com/DmAf5IYBdhLWcg3wOQq2 - Ciro Santilli OurBigBook.com
2个回答

3
答案在Android OpenGLES文档中。基本上,尝试创建一个3.0的EGLContext,如果失败了,则说明不支持3.0。
该页面还显示了一种替代方法:为较低级别(1.x或2.x)创建上下文,并使用它来调用glGetString(GL_VERSION)。如果版本字符串指示支持3.x,则应销毁该上下文并创建新上下文。 更新:这种方法可以在Grafika的EglCore类中看到。当构造函数传递FLAG_TRY_GLES3时,请跟随发生的情况。

这个调用返回的报告字符串应该有一个注释。一些实现返回“OpenGL ES X.X”,而其他实现返回“X.X”,所以这也可能是供应商特定的(我只遇到了这两种变化,但谁知道还有哪些其他变化?)。 - RelativeGames
1
OpenGL ES 2.0和3.0规范要求glGetString(GL_VERSION)的结果以"OpenGL ES X.Y"开头,但可以跟随其他实现定义的内容。不遵循此规定的实现应该在Khronos和Android一致性测试中失败。 - Jesse Hall
我猜(但并不确定)1.1上下文将始终返回版本1.1,因为它不支持向前兼容。无论如何,您不必创建ES3上下文,因为您可以在ES2上下文中动态加载和使用所有ES3功能,因为ES3是ES2的超集。 - Triang3l

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接