Blog graphique 2

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 particulièrement la version Ruby qui est simple claire, compacte efficace. Permet sous GNU/Linux d’utiliser l’OpenGL pour le 3d, l’accélération 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 vectoriel, rien pour le vectoriel 2D, il faut ecrire cette partie en OpenGL, rmagick permet bien d’écrire des 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 résultats sont intéressant (utilisation des svg, changement de la taille de la fenêtre à volonté, etc…) d’après son développeur principal.

Un ‘concurrent’ de Gosu, Rubygame une plus grosse api, mais pas aussi facile d’accès, et peut être 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 malheureusement que les primitives les plus simples, mais un exemple de viewer SVG en c++ et quelques autres intégré 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 convaincu et n’est pas eu le temps de creuser :
Ruby-SVG une bibliothèque SVG pour ruby, ça crée plutôt des SVG a embarqué dans le source d’une page que des réels fichiers SVG visiblement, mais ça ne doit pas être un problème
Svugy Pour créer des fichiers SVG

Une liste de téléphones mobiles supportant le SVG (je confirme mon V630i le fait), Inkscape est cité dans les documentations de s/e.

Toujours à propos des appareils mobiles, OpenKode est une unification de différentes api standard, de façon a faciliter le déploiement d’application sur différents systèmes mobiles sans redéveloppement, 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 implémentations libre et à sources ouvertes : Celle de Zack Rusin utilisant QtOpenGL pour l’accélération, 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é, dommage. Pas de librairie OpenVG ruby non plus visiblement.

G3D-ruby est un bind ruby de G3D qui est elle même une bibliothèque permettant d’utiliser les fonctions avancées d’OpenGL (vertex array, shaders (GLSL recommandé), …) ainsi que quelques fonctions utiles 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).

2 commentaires »

  1. Bonjour
    Très bonne article.
    Je vois apparemment que tu as bien fait le tour du sujet.

    J’ai quelque question par rapport à l’installation de tous ça.
    Quelle la distrib la plus simple pour faire ses installs? (ubuntu?)

    Je viens de faire un test sur ma mandriva 2007 en ce qui concerne gosu.
    via gem il m’install un gosu
    Mais le helloworld de mon tutorial plante à requier ‘gosu.so’ ?
    j’ai essayer à partir des sources mais ./configure me crie

    checking for pangoft2… no
    configure: error: Missing pangoft2

    bref pas top.

    j’ai aussi lu que foxRuby permet de faire des appli de type gtk avec des canva opengl
    Mais gem plante à l’install.
    Il y a t’il des dépendance à satisfaire avant l’install de fxRuby?

    Merci encore pour l’article et la liste de liens.

    Commentaire par ranska — %PM %Europe/Paris %894 %2008 @ %21:%Feb

  2. Merci, en fait, il me sert de pense bête & référence, j’ajoute des informations au fur & à mesure de mes recherches ou découvertes hazardeuses.

    J’utilise Linux From Scratch comme machine de production et une ubuntu comme machine de test pour certaines applications avant de les installer sur ma machine de production.

    Pour gosu, je l’ai installé directement dans LFS, pour ce qui concerne ce que tu decris, les exemples du repertoire examples décrivent ce qu’il faut faire en cas d’installation via gem. Je te conseil de les regarder, ils sont très instructifs.

    Voici donc le petit bout de code à ajouter en debut de sript :

    begin
      # In case you use Gosu via RubyGems.
      require 'rubygems'
    rescue LoadError
      # In case you don't.
    end
    

    Pour ce qui est de la compilation, si tu voit une erreur du genre missing ‘quelque chose’ essaie de trouver les paquets ‘quelque chose’ et ‘quelque chose-dev’ qui sont tous deux indispensables et séparés dans les distributions précompilées.
    dans ton cas, donc, cherche pangoft2 et pangoft2-dev, mais encore une fois, je pense que les quelques lignes précédente en début de ton programme devraient suffir.

    Je ne sais plus si j’ai testé ou pas fxRuby.

    Commentaire par Administrator — %AM %Europe/Paris %033 %2008 @ %00:%Feb

Flux RSS des commentaires de cet article. URL de rétrolien

Laisser un commentaire

Vous devez être connecté pour rédiger un commentaire.

Propulsé par WordPress

Switch to our mobile site