[opengl] loader xpm: textures dans l'exe

Soyez le premier à donner votre avis sur cette source.

Vue 7 485 fois - Téléchargée 453 fois

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

Ajouter un commentaire Commentaires
Messages postés
1267
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
28 février 2007
3
Oué ça me plaît les formats d'image :) Et j'ai pas fini je pense ;)

Sinon pour ce que tu dis Arnaud : j'ai dit true colors mais attention, j'ai pas dit que je ne compressais pas; en fait je me verrais bien un format texte avec une compression RLE, facultative (à la façon TGA), et en RGB ou RGBA, au choix.
Une fois dans l'exe ça prendra moins de place qu'un fichier BMP n'en prendrait tout seul, vu que tout le texte aura disparu avec la compilation, pour ne laisser plus que les données elles-mêmes (le static char* image[]) ^^
Messages postés
80
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
22 mars 2007

Hey Funto tu aimes bien les formats d'image n'est-ce pas!
- la video en jpeg
- le tga
- le xpm
Wow !
Bon pour parler bien,
je trouve ça bien que tu gardes un schéma similaire entre tes classes loaders ( tga et xpm )!
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
true colors? mais autant cpoier-coller un bmp dans un xpm alors!
Messages postés
1267
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
28 février 2007
3
Content de voir que ça plaît :)
Pour le format, normalement on doit bien pouvoir dépasser les 1024 de dimensions, je ne vois pas où l'on devrait être limité...
A mon avis comme tu dis ce doit être une limitation du bloc-notes; faut pas oublier que pour les fichiers .txt trop importants on est obligés d'utiliser au moins WordPad ^^

En fait la seule véritable limitation de ce format je trouve, à part la taille que prend un fichier comme ça (encore que dans l'exe ça doit en prendre moins), c'est l'utilisation de colormaps (comme pour le GIF je crois d'ailleurs).
Je ferai une version avec un format perso en true colors je pense un jour :)
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
ahah encore un super loader!
tu te déchaines funto ;)
bon je pense pas qu'il servira autant que ton mondialement connu tgaloader mais qu'est-ce que ca change hein?
Le format de fichier est bizarre...et ya un probleme (petit et je ne suis pas sur): dans un éditeur de textes on peur jamais mettre une ligne de plus de 1024 caracteres. je sais pas si c'est du au format de fichier ou au bloc-notes (je penche plutot vers le bloc note ;) )
mais comme chaque ligne commence pas ':' ca voudrait dire que la plus grande largeur c'est 512?? dis moi que non :)
c'est intelligent, le "static char * coucou_xpm[] = {...}" mais c'est bon que pour des progs genre démos pasque pour un vrai jeu on peut pas se permettre un truc comme ca; mais c'est dans cette optique que tu as fait ca je pense.

bon en fait c'est trop bien comme prog. :p
surtout que la source est minuscule, ca j'aime ;)
Afficher les 6 commentaires

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.