2016-03-29 20 views
0

Telefonumda OpenGL ES sürümünü almak için bu kodu kullanıyorum. Ben 3.0 olarak gles versiyonunu alıyorum, benim Nexus 5'te Is there a way to check if Android device supports openGL ES 2.0?getGlEsVersion() android sürüm 6.0.1 ile nexus 5'de 3.0'ı döndürüyor

:

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

ben bu bağlantıdan bu kodu bulduk. Ancak, bu belgeye göre, http://developer.android.com/guide/topics/graphics/opengl.html, 3.1 almalıyım çünkü "OpenGL ES 3.1 - Bu API belirtimi Android 5.0 (API level 21) ve üstü tarafından destekleniyor."

Bence OpenGL ES sürümü olarak 3.1 almalıyım. Herkes bana OpenGL ES sürümü olarak neden 3.0 aldığımı söyleyebilir mi?

cevap

1

API 21 , GLES 3.1 sürümlerini desteklerken, kullanılabilirliğini garanti etmez. Bu, çalışma zamanında kullanılan GLES versiyonunun kontrol edilmesinin sebebidir (bağlı olduğunuz android dokümanlar içinde açıklandığı gibi), aksi takdirde sadece manifestinizde buna ihtiyacınız olacaktır.

Nexus 5'iniz varsa, yalnızca GLES 3.0'ı destekleyen Adreno 330'a sahiptir. Dolayısıyla, uygulamanızın Nexus 5'inizde çalışmasını istiyorsanız, GLES 3.0'a bağlısınız demektir, aksi takdirde, GLES 3.1'i destekleyen bir cihaz almalı ve bunu manifestinizde kullanmalısınız.