[SDL] Comment inclure les BMP dans l'exécutable ? [Résolu]

Messages postés
4
Date d'inscription
mercredi 4 décembre 2002
Statut
Membre
Dernière intervention
8 avril 2007
- - Dernière réponse : cs_manidan
Messages postés
1
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
1 février 2010
- 1 févr. 2010 à 08:04
Bonjour,

Je travail sur un petit projet en SDL (le classique Snake) et le petit jeu fonctionne correctement.
Cependant, il est nécessaire que l'éxecutable soit placé dans une arborescence bien particulière par rapport aux BMP utilisés pour que les images se chargent correctement. Voila pourquoi dans un soucis de portabilité, j'aimerai pouvoir inclure les BMP directement dans l'éxecutable pour n'avoir au final qu'un seul et unique fichier nécessaire au bon fonctionnement de l'application.

D'avance merci
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
4
Date d'inscription
mercredi 4 décembre 2002
Statut
Membre
Dernière intervention
8 avril 2007
3
Merci
J'ai trouvé solution sur un autre forum.
Elle réside dans les fonctions SDL_RWops et IMG_Load_RW.
Merci à http://www.developpez.net/
++

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 197 internautes nous ont dit merci ce mois-ci

Commenter la réponse de FabHacker
Messages postés
968
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
0
Merci
suffit de les mettre en ressources
Commenter la réponse de cs_juju12
Messages postés
4
Date d'inscription
mercredi 4 décembre 2002
Statut
Membre
Dernière intervention
8 avril 2007
0
Merci
J'ai fait des recherches de ce coté là, mais je ne suis pas arrivé à mes fins.
Voila ce que j'ai fait jusque là:

[fichier ressources.rc]
// Icône du projet
ICONE_PROJET ICON "monprojet.ico"


// Bitmaps
IMAGE_BACKGROUND BITMAP "images\\background.bmp"

Celui là semble correcte, car à la compilation le taille de l'exe augmente (et l'icone est utilisée).
Après, c'est pour l'utilisation que j'ai un problème... je ne voie pas du tout comment faire !
J'ai vu dans certains projets un ressources.h, j'ai donc fait cela:

[fichier ressources.h]
#ifndef RESSOURCES_H
#define RESSOURCES_H




 #define IMAGE_BACKGROUND 1




#endif

Mais je ne suis pas plus avancé. Je ne voie pas comment accèder à mes ressources dans mon projet.
Avec les foncions SDL, je charge les images avec leur chemin "images/monimage.bmp" par exemple.
Comment substituer avec l'image en ressource ?
Commenter la réponse de FabHacker
Messages postés
968
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
0
Merci
Tu utilises LoadResource et ses dérivées LoadIcon, LoadBitmap...
Commenter la réponse de cs_juju12
Messages postés
4
Date d'inscription
mercredi 4 décembre 2002
Statut
Membre
Dernière intervention
8 avril 2007
0
Merci
Malgré mes rechercher et ma bonne volontée je n'arrive toujours pas à voir comment proceder...
Mon projet utilise la librairie standard SDL.
Voila le code de la fonction me permettant de charger une image:

SDL_Surface *charger_image(char *filename) {


    //L'image qui est chargé
    SDL_Surface* loadedImage = NULL;


    //L'image optimisée que nous allons utiliser
    SDL_Surface* optimizedImage = NULL;


    //Chargement de l'image
    loadedImage = IMG_Load(filename); // <---------------- LIGNE A SUBSTITUER


    //Si l'image est bien chagée
    if(loadedImage != NULL)
    {
        //Création de l'image optimisée
        optimizedImage = SDL_DisplayFormat( loadedImage );


        //Libération de l'ancienne image
        SDL_FreeSurface( loadedImage );
    }


    //On retourne l'image otpimisée
    return optimizedImage;
}

Du coup le problème vient de la conversion du BMP ressource en SDL_Surface.
Commenter la réponse de FabHacker
Messages postés
1
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
1 février 2010
0
Merci
salut tout le monde
fabhacker ton lien ne marche plus
est-ce-que tu peux nous expliquer comment sans donner de liens
merci
Commenter la réponse de cs_manidan