GeeXLab supporte le Raspberry Pi depuis mars 2015 (version 0.8.2). Depuis le support du Raspberry Pi dans GeeXLab a évolué et surtout la plupart des bugs de jeunesse ont été fixés. Mais au fait, qu'est-ce que le Raspberry Pi?
Le Raspberry Pi, ou RPi pour les intimes, est un micro ordinateur au sens propre du terme. Il se classe dans la catégorie des SBC (Single Board Computer). Le RPi est donc un ordinateur complet (CPU quad-core, GPU, RAM, ports USB, port ethernet, sortie audio et sortie HDMI) qui tient sur une carte de crédit. Le RPi est propulsé par un système d'exploitation Linux: le Raspbian qui est une version dérivée de la distribution Debian.
Si je me suis interessé au Raspberry Pi, c'est tout simplement que le RPi peut faire de la 3D. Il est équipé d'un GPU du constructeur Broadcom, le VideoCore IV (VC4). Le VC4 est un GPU compatible OpenGL 2.1 et OpenGL ES 2.0. Quand je me suis intéressé au RPi, seul le support OpenGL ES 2.0 était disponible. Mais ce support à une limitation un peu génante sur le RPi: le gestionnaire de fenêtres de Raspbian ne le supporte pas. Pour faire simple, il n'est pas possible de créer une application fenêtrée standard qui supporte l'accélération materiel OpenGL ES 2.0. La seule façon d'afficher de la 3D avec OpenGL ES 2.0 est de dessiner directement sur le bureau du Raspbian. De plus, vu qu'il n'y a pas de fenêtre, toute la gestion bas niveau du clavier / souris est à refaire. Je peux vous dire que je me suis bien amusé! Mais c'est chose faite et le support OpenGL ES 2.0 est totalement fonctionnel dans GeeXLab.
Au vu de la sévère contrainte imposée par l'OpenGL ES 2.0, l'équipe de la Fondation Raspberry Pi, a décidé d'ajouter le support OpenGL 2.1. Et cette fois ci, les fenêtres 3D sont supportées. On se retrouve dans l'univers traditionnel de la programmation OpenGL sous Linux avec des fenêtres X11. Même si la programmation des fenêtres X11 (avec la Xlib) reste souvent difficile (et parfois incompréhensible), nous sommes enfin face à une application fenêtrée standard: le clavier et la souris sont gérés par X11 et du coup le déplacement, à la souris, d'une fenêtre OpenGL est possible (truc de fou!).
Si je résume un peu, nous avons avec le Raspberry Pi, un ordinateur complet de la taille d'une carte de crédit, qui consomme peu de puissance (autour des 10 watts max) et doté de capacités 3D temps réel de niveau OpenGL 2.1. Pas mal!
Le Raspberry Pi dispose d'une seconde arme d'un autre genre: le GPIO. GPIO est l'acronyme de General Purpose Input Output. C'est tout simplement un connecteur de 40 broches à usage général. Et la chose vraiment intéressante est que l'on peut programmer ce connecteur. Il existe des APIs en C ou Python pour cela. Et bien sur, vous vous en doutez bien, GeeXLab propose lui aussi une API, à la fois en Lua et Python, pour programmer ce GPIO. Du coup il est facile, avec GeeXLab, de piloter un système électronique tout en affichant de la 2D ou 3D synchronisée avec l'électronique. Ce que j'adore avec le GPIO c'est ce passage du monde virtuel au monde réel, ou comment le virtuel contrôle le réel.
Voilà deux articles que j'ai écrits il y a quelques temps déjà, et qui traitent du port GPIO et de sa programmation avec GeeXLab:
Mais ce n'est pas fini. Le connecteur GPIO permet toutes sortes de folies. Une de ces folies est le pilotage de matrices de LEDs RGB. Une matrice de LEDs RGB est un petit panneau carré d'une dizaine de centimètres de coté qui contient des LEDs. Dans mon cas, je me suis procuré des matrices de 32x32 LEDs (soient 1024 LEDs). Chacune de ces LEDs peut être pilotée individuellement. Et bien sur, j'ai ajouté le support de la programmation de ces matrices de LEDs dans GeeXLab. Il est donc possible, grâce à GeeXLab, de rendre n'importe quelle scène 3D sur des matrices LEDs.
Voici quelques articles qui traitent des matrices LED RGB et de leur programmation avec GeeXLab:
Et pour finir cette présentation du Raspberry Pi et de ce qu'il est possible de faire avec GeeXLab, voici quelques captures d'écran de démos shadertoy converties en GeeXLab + OpenGL 2.1. Certaines de ces démos ont un framerate vraiment correct (> 30FPS) alors que certaines sont beaucoup plus difficiles à faire digérer par le petit RPi (< 10FPS).
Si vous shouhaitez tester ces démos il vous faut GeeXLab pour Raspberry Pi avec OpenGL 2.1 et le pack de démos shadertoy:
Ce petit article peut vous aider à lancer les demos shadertoy avec GeeXLab.