Bonjour à tous,
Je viens de commencer à m'intéresser à la SDL et actuellement je suis les tutos de Loka proposés sur développez.
Mon problème est le suivant :
Dans un soucis de portabilité du code, j'utilise les fonctions proposées par Loka avec une petite variante, par exemple :
la fonction void init() devient chez moi void init(SDL_Surface *ecran), afin que je puisse lui passer la variable globale screen, qui gère la surface de l'écran.
Le code de la fonction init que j'appelle dans le main, avec le paramètre screen est le suivant :
Cependant après l'exécution de cette fonction, la variable globale screen vaut toujours NULL et le progamme me lance un SIGSEV au niveau de la fonction SDL_Flip(screen)
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 bool init(SDL_Surface *ecran) { //initialisation de tout les sous-systemes de sdl if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 ) { return false; } //on met en place l'ecran ecran = SDL_SetVideoMode( WIDTH, HEIGHT, BPP, SDL_SWSURFACE ); //Si il y a une erreur lors de la mise en place de l'ecran if( ecran == NULL ) { return false; } return true ; }
Le code de mon main pour illustrer mes propos :
Je resignal au passage que screen (et image) est définit comme variable globale.
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
27
28
29
30 int main(int argc, char **argv) { bool quit = false ; if(!(init(screen))) fprintf(stderr,"Echec à l'initialisation de la SDL") ; if(!(load_files(image))) fprintf(stderr,"Impossible de charger l'image") ; apply_surface(0,0,image,screen) ; if(SDL_Flip(screen) == -1) fprintf(stderr,"Erreur durant l'actualisation : %s\n",SDL_GetError()) ; //Tant que l'utilisateur ne veut pas quitter while(!quit) { //Tant qu'il y a un évènement à traiter while(SDL_PollEvent(&event)) { if(event.type == SDL_QUIT) quit = true ; } } clean_up(image) ; return 0 ; }
Merci d'avance pour vos réponse
Partager