2016-03-29 5 views
0

Ich benutze diesen Code, um OpenGL ES Version auf meinem Handy zu bekommen.getGlEsVersion() gibt 3.0 auf meinem Nexus 5 mit Android-Version 6.0.1 zurück

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()); 

Ich habe diesen Code aus diesem Link: Is there a way to check if Android device supports openGL ES 2.0?

Auf meinem Nexus 5, erhalte ich GLES Version als 3.0. Aber nach diesem Dokument, http://developer.android.com/guide/topics/graphics/opengl.html, sollte ich 3.1 bekommen, weil "OpenGL ES 3.1 - Diese API-Spezifikation wird von Android 5.0 (API Level 21) und höher unterstützt."

Ich denke, ich sollte 3.1 als OpenGL ES-Version erhalten. Kann mir jemand sagen, warum ich 3.0 als OpenGL ES-Version bekomme?

Antwort

1

Während API 21 GLES 3.1 unterstützt, garantiert es nicht die Verfügbarkeit. Dies ist der Grund dafür, die Version von GLES zu überprüfen, die zur Laufzeit verwendet wird (wie in den android-Dokumenten, die Sie verlinkt haben, erläutert), andernfalls müssten Sie sie nur in Ihrem Manifest anfordern.

Wenn Sie ein Nexus 5 haben, hat es eine Adreno 330, die nur GLES 3.0 unterstützt. Wenn Sie möchten, dass Ihre Anwendung auf Ihrem Nexus 5 ausgeführt wird, stecken Sie fest in GLES 3.0. Andernfalls sollten Sie ein Gerät erhalten, das GLES 3.1 unterstützt und in Ihrem Manifest erfordert.

Verwandte Themen