Bonjour a tous,
Apres un long moment passé sur les différent tutoriels du net, je ne m'en sors pas. Je veux pour le moment pouvoir déplacer un rectangle (sans image ni rien).
J'ai réussi a le faire en affichant mon rectangle a une position puis a chaque boucle d'évènement, j'éffacais entièrement l'écran (solution limité).
Je m'attaque au double buffer.
Si j'ai bien compris je déclare deux surface (qui seront intervertient par SDL_Flip() ).
Donc mes deux surfaces :
Je déclare aussi un rectangle:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SDL_Surface *screen; SDL_Surface *srcbuf;
Et la je bloque, si j'ai bien compris je dois enregistrer le rectangle dans ma surface template, ici srcbuf, mais avec quelle fonction. J'ai éssayer de faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SDL_Rect rec; rec.x=50;//ainsi que ses attributs rec.y=50; rec.h=100; rec.w=100;
mais ca renvoi une erreur (Fatal signal: Segmentation Fault (SDL Parachute Deployed)).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SDL_FillRect(srcbuf, &rec, SDL_MapRGB(screen->format, 0, 0, 255));
Donc en fait je dois enregistrer rec dans srcbuf avant de faire un SDL_Flip(screen); mais comment le faire?
Ce que je ne comprend pas non plus, c'est le SDL_BlitSurface();, cette fonction copie le rectangle d'une surface dans un rectangle de destination d'une autre surface, alors pourquoi utilliser SDL_Flip ensuite.
Désolé tout ca n'ets pas tres clair, a l'image de ma pensé par rapport a ce problème. C'est la base de SDL ce doublebuff.
Merci beaucoup !
Partager