Sample code pour GLKit et iOS 5 1/2

Nous venons, comme des millions de geeks, de prendre possession de iOS 5 et de son SDK.
Ouch !
Arg !
Mazette !

La mise à jour est impressionnante, et tout à fait recommandable (du moins pour les iPhone 4, dans le passé la mise à jour vers iOS 4 pour les iPhone 3G n'a pas été de tout repos, souvenir souvenir...). On y reviendra.

En vitesse, parlons de GLKit.
Késako ?



A première vue, ça ressemble à une réponse de la part d'Apple à tous les développeurs :
1- qui souffrent avec OpenGL ES
2- qui souffrent atrocement avec OpenGL ES 2.0

Pour rappel, OpenGL ES 2.0, présent à partir du 3GS, ne maintient pas de compatibilité avec OpenGL ES 1.1. Pour les développeurs, il faut tout ré écrire. Et quand je dis tout, c'est tout : OpenGL ES 2.0 possède un "pipeline programmable" : moralité, vous aurez à écrire le bout de code calculant l'illumination de vos objets, sinon, vous n'afficherez rien...

Bref, OpenGL ES 2.0 permet une souplesse incroyable, au prix d'une courbe d'apprentissage assez ardue.
Et c'est là qu'arrive GLKit !! Tintinnnnn !
GLKit, c'est une surcouche pas trop envahissante, permettant de prémacher une partie du boulot. Elle introduit des GLKBaseEffect, permettant de gérer des shaders (les bouts de programme permettant de calculer la lumière) directement, ou de gérer la partie matheuse d'OpenGL ES (notamment les cacluls matriciels).

Pour les connaisseurs, ça ressemble à ce que Microsoft a mis en place avec XNA (notamment la notion d'Effect).

Pour l'instant, il y a peu de littérature sur le sujet, peu de tutoriels, peu de samples. Nous, on débroussaille. Mais c'est très prometteur.

Et surtout, avec Xcode 4.2 et iOS 5.0, Apple a créé un nouveau template de projets OpenGL ES. Et autant l'ancien était, comme me le souffle dans l'oreille le cougar malicieux, "craignos" (il n'était même pas en 3D !), autant le nouveau est très bien fait.

Créez un nouveau projet à partir du template OpenGL ES 2.0 dans Xcode 4.2 ; vous aurez un programme animant deux cubes tournant autour d'un axe. Ce qui est notable, c'est qu'un des deux utilise GLKit (et notamment les effets permettant de calculer la lumière) ,et l'autre OpenGL ES 2.0 classique (avec des shaders). Excellent pour pouvoir comprendre les ajouts de GLKit, et une très bonne base pour développer en OpenLG ES. Même si on aurait aimé des textures sur les cubes.

Bon courage, on va creuser le sujet ;-)
Previous
Next Post »