IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

Pb IMG_load sous VC++ 2008


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 28
    Par défaut Pb IMG_load sous VC++ 2008
    Bonjour,

    Petit nouveau en C++, je cherche à charger des images à l'aide de la fonction suivante (inspirée d'un tutorial trouvé sur ce site) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    void Sprite::modImage(const char* image)
    {
    	//Surface tampon qui nous servira pour charger l'image
    	SDL_Surface* loadedImage = NULL;
     
    	loadedImage = IMG_Load(image);
     
    	//Si le chargement se passe bien
    	if( loadedImage != NULL ) 
            {
    		//Création de l'image optimisée
    		_image = SDL_DisplayFormat( loadedImage );
     
    		//Si l'image optimisée créée est bonne
        	        if( _image != NULL )
        	        {
                          Uint32 colorkey = SDL_MapRGB( _image->format, 0, 0, 0xff );
     
                          //On met tous les pixels de couleur R 0, G 0, B 0xFF transparent
                           SDL_SetColorKey( _image, SDL_RLEACCEL |    SDL_SRCCOLORKEY, colorkey );
        	        }
     
    		//Libération de l'ancienne image
    		SDL_FreeSurface( loadedImage );
    	}
    }
    Ma seule modification importante est d'avoir remplacé le nom de fichier donné à IMG_load() par un "char*" plutôt qu'une "string" (mais dans la doc officielle l'argument est indiqué comme "char*").

    Ce code fonctionne très bien sous Ubuntu, compilé avec Code::Blocks mais sous Windows et Visual C++ Express 9 le pointeur "loadedImage" reste vide malgré l'assignation avec IMG_load()...

    Quelqu'un saurait-il d'où vient le problème?

    Je précise évidemment que les images que je souhaite afficher se trouvent dans le même dossier que mon ".exe" et qu'elles ont le même nom que dans mon code...

  2. #2
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Salut,

    peut-être que SDL_GetError() te montre la voie

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 28
    Par défaut Merci pour la piste...
    Merci pour la piste et le problème est résolu en partie grace à ton conseil : il ne fallait pas mettre les jpg dans le dossier du ".exe" mais dans le même dossier que les sources pour le débogage (par contre, pour l'exécution normale c'est dans le même dossier que l'".exe", ce qui est bizarre).

    Sinon, il me manquait les dll de gestion des différents formats ("jpeg.dll") à copier...

  4. #4
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    En fait ça dépend de comment tu lances ton programme:

    si tu l'exécutes via VC++ il faut mettres les fichiers dans le même répertoire que les sources, et si tu double-cliques sur ton programme alors c'est dans le même répertoire que l'exe.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fichier .rar sous Mandriva 2008
    Par amvs_ dans le forum Applications et environnements graphiques
    Réponses: 8
    Dernier message: 04/03/2008, 21h19
  2. Xemacs et OCaml sous Mandriva 2008
    Par amvs_ dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 03/03/2008, 13h45
  3. Eclipse sous Mandriva 2008
    Par amvs_ dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 03/03/2008, 11h27
  4. Problèmes avec les webservices sous VS 2008 ( CTP )
    Par Amokrane dans le forum Framework .NET
    Réponses: 3
    Dernier message: 25/12/2007, 18h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo