Préparer une activité pour utiliser OpenGL

 

Les différentes Versions OpenGL SE

Il sera fort utile de connaître la version OpenGL installée sur le portable. Il faut savoir que les versions 1.0 et 2.0 sont incompatibles:

Fixed Pipeline: OpenGL ES 1.x

Programmable Pipeline: OpenGL ES 2.x

Le PipeLine étant un ensemble de traitements permettant d'obtenir un rendu d'une image. Dans le premier cas, tout est déjà programmé d'une certaine manière et vous ne pourrez que fournir les points (vertice), textures, meshes ... à dessiner, l'API fera le reste. Dans le second cas, vous fournissez ces traitements...

 

Connaître la version OpenGL SE

Pour connaître la version, il faudra passer par la classe Context afin de récupérer une instance ActivityManager:

ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);

Il sera dès lors possible de demander la configuration du portable via la méthode ConfigurationInfo ActivityManager.getDeviceConfigurationInfo()

ConfigurationInfo cfgInfo = am.getDeviceConfigurationInfo();

Pour connaître la version OpenGL SE, il suffit de faire:

Log.d ("OPENGL SE", "Version " + cfgInfo.reqGlEsVersion);

A vous ensuite de contrôler la valeur de cette version et d'autoriser ou non l'exécution de votre code.

// OpenGL SE 2.0 ou plus installé
if (info.reqGlEsVersion >= 0x20000)

[...]

Image non trouvée !OpenGL ES 2.0 requière au minimum Android 2.2 (API 8) mais l'API 10 (Android 2.3.3) permet sous Android de profiter pleinement d'OpenGL SE 2.0. Il est donc vivement conseillé d'indiquer <uses-sdk android:minSdkVersion="8" /> voire "10".

 

Une solution plus radicale est d'utiliser dans le manifest:

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