Petit problème en SDL ...

Petit problème en SDL ... - C++ - Programmation

Marsh Posté le 27-02-2006 à 18:46:24    

Salut à tous  :)  
 
J'ai un petit problème, rien de bien méchant je pense mais ca me fait galérer depuis une bonne demi heure et je commence à en avoir marre.
 
Si j'ai bien localisé le problème, ca vient de ces quelques lignes :
 

Code :
  1. SDL_Surface* temp;
  2. temp=SDL_LoadBMP("img/road_1A.bmp" );
  3. SDL_BlitSurface(temp,NULL,road,NULL);
  4. return road;


 
Et là quand j'affiche road j'ai rien  :??:  
Alors que si je change ces lignes en  
 

Code :
  1. road=SDL_LoadBMP("img/road_1A.bmp" );
  2. return road;


 
Ca marche très bien ...    :??:  
 
Si quelqu'un sait pourquoi ...

Reply

Marsh Posté le 27-02-2006 à 18:46:24   

Reply

Marsh Posté le 27-02-2006 à 21:47:04    

Dans ton premier exemple, tu dois allouer road via un SDL_CreateRGBSurface par exemple pour que la surface puisse accueillir  les données de ton blit.  
 
Tu aurais pu voir cette erreur en vérifiant systématiquement le code de retour des fonctions !
 

Code :
  1. if ( !temp ) { std::cout << SDL_GetError() << '\n' ; // .... }
  2. if ( SDL_BlitSurface(temp,NULL,road,NULL) < 0 ) { std::cout << SDL_GetError() << '\n' ; // .... }

Reply

Marsh Posté le 28-02-2006 à 13:36:40    

Merci Evadream  :)  
 
Je débute en C++/SDL, alors j'essaye de différentes façons quand ca marche pas mais là je pensais qu'une surface classique suffisait, comme quand j'envoie tout vers ma surface définitive avant de l'afficher, ca marche maintenant, merci beaucoup  :D

Reply

Marsh Posté le 28-02-2006 à 13:58:44    

:) Lorsque tu déclares une SDL_Surface comme ça  

Code :
  1. SDL_Surface* temp ;

 
 
Tu ne fais que déclarer un pointeur vers une SDL_Surface. Physiquement, il n'y a pas de surface en mémoire. Ce n'est pas une surface "classique", mais un pointeur vers une SDL_Surface qui pointe pour l'instant vers rien du tout. Il faut le faire pointer vers quelque chose de valide, via SDL_LoadBMP par exemple, ou bien SDL_CreateRGBSurface.
 
Bon courage pour la suite !

Reply

Marsh Posté le 28-02-2006 à 14:08:09    

Merci pour tes explications, je pense que je devrais m'en sortir ^^
A++

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed