C++ 在Android上使用OpenGL ES 3?

C++ 在Android上使用OpenGL ES 3?,c++,android-ndk,opengl-es-3.0,C++,Android Ndk,Opengl Es 3.0,我下载了AndroidNDKR9并编译了一个示例应用程序。我有一部升级了安卓4.3的Galaxy Nexus智能手机 如何以编程方式确定我的设备是否支持OpenGL ES 3?首先,查看。另外,请查看答案在中。基本上,尝试创建一个3.0EGLContext,如果失败,您就知道3.0不受支持 该页面还显示了另一种方法:为较低级别(1.x或2.x)创建上下文,并使用该上下文调用glGetString(GL\u版本)。如果版本字符串表明支持3.x,您将销毁该上下文并创建一个新的上下文 更新:这种方法可

我下载了AndroidNDKR9并编译了一个示例应用程序。我有一部升级了安卓4.3的Galaxy Nexus智能手机

如何以编程方式确定我的设备是否支持OpenGL ES 3?

首先,查看。另外,请查看

答案在中。基本上,尝试创建一个3.0
EGLContext
,如果失败,您就知道3.0不受支持

该页面还显示了另一种方法:为较低级别(1.x或2.x)创建上下文,并使用该上下文调用
glGetString(GL\u版本)
。如果版本字符串表明支持3.x,您将销毁该上下文并创建一个新的上下文


更新:这种方法可以在课堂上看到。遵循当
FLAG\u TRY\u GLES3
被传递给构造函数时发生的情况。

应该注意从该调用返回的报告字符串。一些实现返回“OpenGL ES X.X”,而其他实现返回“X.X”,因此这也可能是特定于供应商的(我只遇到了这两种变体,但谁知道还有其他变体?)OpenGL ES 2.0和3.0规范要求glGetString(GL_版本)的结果以“OpenGL ES X.Y”开头,但接下来可以是其他实现定义的东西。没有做到这一点的实现应该不会通过Khronos和Android一致性测试。我猜(但不知道)1.1上下文将始终返回版本1.1,因为它不向前兼容。您不必创建ES3上下文,您可以在ES2上下文中动态加载和使用所有ES3功能,因为ES3是ES2.emulator的超集: