getGlEsVersion()在我的nexus 5上使用android版本6.0.1返回3.0

时间:2016-03-29 06:03:19

标签: android opengl-es opengl-es-3.0

我正在使用此代码在手机上获取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版本?

1 个答案:

答案 0 :(得分:1)

虽然API 21 支持 GLES 3.1,但它并不能保证其可用性。这是检查在运行时使用的GLES版本的原因(如您链接的Android文档中所述),否则您只需要在清单中要求它。

如果您有Nexus 5,它有一个Adreno 330,它只支持GLES 3.0。因此,如果您希望您的应用程序在Nexus 5上运行,那么您仍然坚持使用GLES 3.0,否则,您应该获得支持GLES 3.1的设备,并在清单中要求它。