3.5 SDL_gfx

Et oui, SDL_image ne fait pas tout.

Voici l'include de SDL_gfx :

1
#include <SDL/SDL_gfx>

Faire pivoter l'image sur elle même, et pouvoir zoomer, ou dé-zoomer c'est aussi utile.

Et quelle chance, tout ce fait avec la même fonction :

1
SDL_Surface* rotozoomSurface(SDL_Surface* image, double angle, double zoom, double smoth);

On passe l'image, l'angle de rotation (en radian), le zoom (1.0 pour laisser l'image comme elle est) et smooth est une indication pour lisser l'image (généralement à 1).

Comme vous pouvez l'imaginer, cette fonction créé une nouvelle SDL_Surface* dès qu'on l'appelle, alors faites attention aux fuites de mémoire (un petit coup de SDL_FreeSurface ne peut pas faire de mal , sauf sur un pointeur NULL).

Suivant ce que vous faite je vous conseillerai de stocker les différentes rotations de vos image dans une liste ou un tableau de SDL_Surface*, cela gagnera du temps à l'exécution (mais en perdra en peu à l'initialisation, enfin très peu).

Si vous voulez compiler avec g++ :

g++ -Wall main.cpp -o exemple -lSDL -lSDL_image -lSDL_gfx

Ou avec CMake, dans un CMakeLists.txt :

1
target_link_libraries(fenetreSDL SDL SDL_image SDL_gfx)