我正在使用此代码在手机上获取OpenGL ES版本。
int result;
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
ConfigurationInfo configInfo = activityManager
.getDeviceConfigurationInfo();
if (configInfo.reqGlEsVersion != ConfigurationInfo.GL_ES_VERSION_UNDEFINED) {
result = configInfo.reqGlEsVersion;
} else {
result = 1 << 16; // Lack of property means OpenGL ES version 1
}
Log.e("reqGlEsVersion", String.valueOf(result));
Log.e("getGlEsVersion", configInfo.getGlEsVersion());
我在此链接中找到了此代码:Is there a way to check if Android device supports openGL ES 2.0?
在我的Nexus 5上,我的GLES版本为3.0。但是根据这个文档http://developer.android.com/guide/topics/graphics/opengl.html,我应该得到3.1因为&#34; OpenGL ES 3.1 - Android 5.0(API级别21)及更高版本支持此API规范。&#34;
我想我应该得到3.1作为OpenGL ES版本。谁能告诉我为什么我得到3.0作为OpenGL ES版本?
答案 0 :(得分:1)
虽然API 21 支持 GLES 3.1,但它并不能保证其可用性。这是检查在运行时使用的GLES版本的原因(如您链接的Android文档中所述),否则您只需要在清单中要求它。
如果您有Nexus 5,它有一个Adreno 330,它只支持GLES 3.0。因此,如果您希望您的应用程序在Nexus 5上运行,那么您仍然坚持使用GLES 3.0,否则,您应该获得支持GLES 3.1的设备,并在清单中要求它。