Un exemple de SVG dynamique
Gosu un toolkit pour developper des jeux (et accessoirement plus généralement multimédia) en Ruby et c++. J’apprecie particulierement la version Ruby qui est simple claire, compacte efficace. Permet sous linux d’utiliser l’opengl pour le 3d, l’acceleration de la partie 2D (bitmap, rotation, scale, zoom) en opengl, le son en SDL_mixer, la simulation physique avec chipmunk. La grosse limite est au niveau du vecto, rien pour le vectoriel 2D, il faut ecrire cette partie en OpenGL, rmagick permet bien d’ecrire fes courbes vectorielles dans des bitmap, mais c’est inutilisable pour retracer en temps réel.
Un excellent exemple en moins de 250 lignes de code commentées et propres OpenGLIntegration.rb, qui mélange décor 3D de montagnes fractales générées dynamiquement, et jeu 2d, avec des étoiles qui tournoient (bitmaps animés avec coloration dynamique) + score.
Ruby-goocanvas basé sur Gcompris est en train de passer progressivement à goocanvas et les resultats sont interessant (utilisation des svg, changement de la taille de la fenetre à volonté, etc…) d’après son développeur principal.
Un ‘concurrent’ de Gosu, Rubygame une plus grosse api, mais pas aussi facile d’acces, et peut etre pas avec la même puissance d’affichage (à voir ???)
agg4r un bind Ruby de la bibliothèque Agg (antigrain), qui utilise SDL, elle ne gère malheureusment que les primtives les plus simples, mais un exemple de viewer SVG en c++ et quelques autres integré aux sources la libagg laisse présager une certaine simplicité pour la gestion du SVG.
Pour la création/gestion des SVG, à explorer (je les notes juste comme ça, je ne suis pas encore convainqu et n’est pas eu le temps de creuser :
Ruby-SVG une bibliothèque SVG pour ruby, ca crée plutot des SVG a embarqué dans le source d’une page que des réels fichiers SVG visiblement, mais ca ne doit pas être un problème
Svugy Pour créer des fichiers SVG
Une liste de telephones mobiles supportant le SVG (je confirme mon V630i le fait), Inkscape est cité dans les docs de s/e.
Toujours à propos des appareils mobiles, OpenKode est une unification de differentes api standard, de façon a faciliter le deploiement d’application sur differents systemes mobiles sans redeveloppement, il utilise OpenGL (3D), OpenSL/ES (son), OpenVG (vecteurs 2d) et OpenMax (streaming video/audio).
A voir aussi, OpenVG, une api libre, comme OpenGL, mais dédiée dessin vectoriel 2d. Il y a déjà 2 implementations libre et à sources ouvertes : Celle de Zack Rusin utilisant QtOpenGL pour l’accéleration, et ShivaVG ne dépendant que d’OpenGL pour l’accélération, mais n’utilisant malheureusement pas les vertex buffer (tampons de vecteurs) ce qui le rend moins rapide qu’il ne pourrait. Visiblement, l’auteur, Ivan Leben, n’a fait qu’un upload dans le SVN il y a 5 mois et n’y a plus touché, domage. Pas de librairie OpenVG ruby non plus visiblement.
G3D-ruby est un bind ruby de G3D qui est elle meme une bibliothèque permettant d’utiliser les fonctions avancées d’OpenGL (vertex array, shaders (GLSL recommendé), …) ainsi que quelques fonctions utilies comme les collisions, physique, ray tracing, BSP tree.
La bibliothèque Shattered Ruby quant est basée sur la bibliothèque libre 3D de haut niveau Ogre3D (elle même basée sur OpenGL).