[opengl] loader xpm: textures dans l'exe

Description

Le format XPM est un format d'image texte, qui est en fait une source C.
XPM signifie X PixMap; il a été créé à la base pour les icônes sous les environnements X-Window.

L'avantage, c'est que l'on peut écrire une ligne du style :
#include "mon_image.xpm"
dans son code :) Cela nous donne accès à une variable static char* mon_image_xpm[] qui contient les informations nécessaires à l'utilisation de l'image.

Dans ce code, j'ai créé une classe capable, à partir de la variable static char* image_xpm[], de créer une texture OpenGL.

Le but est de pouvoir créer des programmes OpenGL utilisant des textures qui ne soient pas externes à l'exécutable : tout est dans l'exe !

Par contre, un défaut du format XPM est qu'il utilise un système de "colormap", ce qui n'est pas adapté du tout aux photographies. Avec des images de type photographies, qui contiennent bcp de couleurs différentes, le loader devient affreusement lent :( (si quelqu'un a une idée pour optimiser...je pense en avoir une mais bon de toutes façons je pense que je créerai un autre système que le XPM :)).

Pour ceux qui auraient déjà vu ma source Loader TGA, c'est presque le même système (j'ai modifié la source en fait ^^).

Bref voilà je pense avoir dit ce qui en valait la peine; pour le reste, Cf les sources.

Dernier truc : main.cpp n'est qu'un exemple simplifié de l'utilisation de la classe XPMDataLoader; s'il y a des variables globales, que le code est moche...etc c'est normal ^^ Si par contre c'est XPMDataLoader qui ne va pas bien, là signalez-le moi svp ;)

Ah oui un autre truc : si jamais vous l'utilisez dans un de vos projets, dites-le moi avant (il n'y a cependant aucune obligation, mais ça fait toujours plaisir ;)).

Ah ben non encore un truc que j'ai oublié de dire (décidément :p) : pour créer des images XPM, le mieux est d'utiliser GIMP 2, j'ai testé mon loader avec ce qu'il exporte et ça marche nickel :) Sinon y'a aussi ma source Alpha Edit ou celle de fredcl, XpmConvert.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.