Bonjour Bonjour,
je suis un débutant en train de suivre le tuto de loki sur le sdl (mais en C au lieu de cpp) en utilisant les tutoriaux à ma façon. La j'ai écrit un bout de prog et je ne comprend pas pourquoi rien ne s'affiche à l'écran. ça serait cool si vous pouviez m'aider.
Main :
en fait l'image fond.bmp fait 16x16px et j'aimerais l'afficher sur toute la fenetre. Les variables de la taille de l'écran sont fixées ce n'est pas ça le problème et quitter = false
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 int main (int argc, char* args[]) { if (!initialisation()) { return 1; } // Création du fond fond_image = charger_image("fond.bmp"); int x = 0; int y = 0; for (y=0; y<ECRAN_HAUTEUR; y=y+16) { for (x=0; x<ECRAN_LARGEUR; x=x+16) { appliquer_surface(x, y, fond_image, fond); printf("X : %u, Y : %u\n", x, y); } } appliquer_surface(0, 0, fond, ecran); SDL_Flip(ecran); //Tant que l'utilisateur ne veut pas quitter while (quitter == false) { while (SDL_PollEvent(&evenement)) { if (evenement.type == SDL_QUIT) { quitter = true; } if (evenement.type == SDL_KEYDOWN) { gestion_clavier(); } } // Mise à jour de l'écran if (SDL_Flip(ecran) == -1) { return EXIT_FAILURE; } } nettoyage(); return 0; }
appliquer_surface
selon moi le problème vient plutot de la parce que je comprend pas trop comment fonctionne cette fonction , si j'ai bien compris on colle une image sur une autre image ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SDL_Rect offset; offset.x = x; offset.y = y; // On blitte la surface SDL_BlitSurface(source, NULL, destination, &offset);
Si jamais la fonction charger_image
Merci d'avance, et désolé d'avoir posté autant de code je sais qu'il est fastidieux de débugger un gros code mais vu que j'ai aucune erreur d'affichée, je sais pas d'ou ça peut venir.
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 SDL_Surface* charger_image(char* fichier) { // Surface tampon qui nous servira pour charger l'image SDL_Surface* image_chargee = NULL; // Nouvelle image optimisée SDL_Surface* image_optimisee = NULL; // Chargement de l'image image_chargee = SDL_LoadBMP(fichier); // Si le chargement se passe bien if (image_chargee != NULL) { // Création de l'image optimisée image_optimisee = SDL_DisplayFormat(image_chargee); // Libération de l'ancienne image SDL_FreeSurface(image_chargee); if (image_optimisee != NULL) { SDL_SetColorKey(image_optimisee, SDL_RLEACCEL | SDL_SRCCOLORKEY, SDL_MapRGB(image_optimisee->format, 0x00, 0xFF, 0x00) ); } } // On retourne l'image optimisée return image_optimisee; }
Merci d'avance pour votre aide.
Partager