Gibt es eine Möglichkeit zu überprüfen, ob Android-Gerät unterstützt openGL ES 2.0?

Ich muss dynamisch überprüfen, ob das verwendete Gerät openGL ES 2.0 unterstützt. Wie kann ich das machen?

  • Wie kann ich auf mein localhost über Android-Handy zugreifen?
  • IOS-ähnliches Storyboard-Tool für Android-Projekt?
  • Android canvas drawText set Schriftgröße von der Breite?
  • Öffnen Sie Facebook-Seite in Facebook App (falls installiert) auf Android
  • ClassNotFoundException bei Verwendung von benutzerdefiniertem Parcelable
  • So legen Sie eine feste Anzahl von Zeilen in android gridView fest?
  • Wie fügen Sie benutzerdefinierte Eigenschaften / Werte in die Android Manifest-Datei hinzu?
  • Wie kann ich die OverScroll-Farbe in Android 2.3.1 ändern?
  • Wie man eine Schaltfläche am Ende eines Android ListView zeigt
  • Android 6.0 Dialogtext wird nicht angezeigt
  • AlertDialog.Builder mit benutzerdefiniertem Layout und EditText; Kann nicht auf die Ansicht zugreifen
  • Erhalten Sie Anwendungskontext von Nicht-Aktivitäts-Singleton-Klasse
  • 7 Solutions collect form web for “Gibt es eine Möglichkeit zu überprüfen, ob Android-Gerät unterstützt openGL ES 2.0?”

    Ja. Der folgende Code wird den Trick machen:

    final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo(); final boolean supportsEs2 = configurationInfo.reqGlEsVersion >= 0x20000; 

    Lesen Sie dies für weitere Informationen: http://www.learnopengles.com/android-lesson-one-getting-started/

    Sie können auch verlangen, dass Sie Geräte einschränken möchten, die 2.0 nicht davon abhalten, Ihre App auf dem Markt zu sehen, indem Sie folgendes Ihrem Manifest hinzufügen:

     <uses-feature android:glEsVersion="0x00020000" android:required="true" /> 

    Siehe auch das doc von uses-feature .

    Neben der Überprüfung in Code in der Art und Weise, die andere erwähnt haben, wenn Sie wollen, um es im Markt zu beschränken, um diese Geräte mit 2.0 dann in Manifest:

      <uses-feature android:glEsVersion="0x00020000" android:required="true" /> 

    Du solltest beides machen, ich habe Leute die Apk direkt an ungeeignete Geräte installiert und musste mit seltsamen Ausnahmen umgehen. Jetzt werfe ich eine runTime:

     private boolean detectOpenGLES20() { ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); ConfigurationInfo info = am.getDeviceConfigurationInfo(); return (info.reqGlEsVersion >= 0x20000); } //in activity onCreate if (!detectOpenGLES20()) { throw new RuntimeException("Open GL ES 2.0 was not found on device"); } 

    Ermittlung von OpenGL-Erweiterungen:

    Implementierungen von OpenGL variieren je nach Android-Gerät in Bezug auf die Erweiterungen der OpenGL ES API, die unterstützt werden. Diese Erweiterungen beinhalten Texturkompressionen, beinhalten aber typischerweise auch andere Erweiterungen des OpenGL-Feature-Sets.

    Um festzustellen, welche Texturkomprimierungsformate und andere OpenGL-Erweiterungen auf einem bestimmten Gerät unterstützt werden:

    Führen Sie den folgenden Code auf Ihren Zielgeräten aus, um festzustellen, welche Texturkomprimierungsformate unterstützt werden:

      String extensions = javax.microedition.khronos.opengles.GL10.glGetString(GL10.GL_EXTENSIONS); 

    Warnung: Die Ergebnisse dieses Aufrufs variieren je nach Gerät! Sie müssen diesen Anruf auf mehreren Zielgeräten ausführen, um festzustellen, welche Komprimierungstypen häufig unterstützt werden. Überprüfen Sie die Ausgabe dieser Methode, um festzustellen, welche OpenGL-Erweiterungen auf dem Gerät unterstützt werden.

    Sie können diesen Code in Ihrem Code verwenden:

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

    Niemals OpenGL ES verwendet, aber es hat die gleiche glGetString Methode wie OpenGL. Es sollte den Trick machen:

    http://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetString.xml

    Dieser Code funktioniert fein ..

      // Check if the system supports OpenGL ES 2.0. final ActivityManager activityManager = ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); final ConfigurationInfo configurationInfo = activityManager .getDeviceConfigurationInfo(); final boolean supportsEs2 = configurationInfo.reqGlEsVersion >= 0x20000; if (supportsEs2) { Log.i("JO", "configurationInfo.reqGlEsVersion:" + configurationInfo.reqGlEsVersion + "supportsEs2:" + supportsEs2); // Request an OpenGL ES 2.0 compatible context. myGlsurfaceView.setEGLContextClientVersion(2); final DisplayMetrics displayMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); // Set the renderer to our demo renderer, defined below. myRenderer = new MyRenderer(this, myGlsurfaceView); } else { // This is where you could create an OpenGL ES 1.x compatible // renderer if you wanted to support both ES 1 and ES 2. return; } 

    Für eine Weile habe ich auch die gleiche Antwort gesucht. Aber leider konnte ich keine richtige Beschreibung dafür finden. Ich habe gerade einen Weg vor einer Minute von mir selbst gefunden, und ich fühle mich wie ich es gerne mit allen teilen würde.

     @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FeatureInfo[] list = this.getPackageManager() .getSystemAvailableFeatures(); Toast.makeText(this, "OpenGL ES Version: " + list[list.length - 1].getGlEsVersion(), Toast.LENGTH_LONG).show(); } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.