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)
[...]
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" />