Premier programme avec la bibliothèque SDL
Vous souhaitez utiliser la fameuse bibliothèque sdl et elle ne vous parait pas très claire d'utilisation ?
Parfait cette page est là pour vous donner les bases et vous aider à compiler votre application.
Quelques lien intéressant :
Inclure la bibliothèque dans vos projets pour l'utiliser ?
Partons du principe que vous l'avez installée via un gestionnaire de paquet, c'est toujours plus simple sous GNU/Linux
Il faut simplement mettre un macro signifiant que vous l'incluez dans le fichier .c :
#include <SDL2/SDL.h>
vous pouvez aussi utiliser
#include "SDL.h"
Notre premier programme
Et maintenons codons en C !
C'était tout ? oui ! pour le moment ça va se corser
- main.c
#include <SDL2/SDL.h> int main(int argc, char *argv[]) { SDL_bool done; SDL_Window *window; SDL_Event event; // On declare la structure d'event SDL_Init(SDL_INIT_VIDEO); // Initialisation de la SDL2 window = SDL_CreateWindow( // Créer la fenêtre "SDL première fenêtre pour comprendre", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_OPENGL ); // Check si la fenêtre à pu être crée if (window == NULL) { SDL_Log("La fenêtre n'a pas pu être créer %s", SDL_GetError()); SDL_Quit(); return 1; } done = SDL_FALSE; while (!done) { // Boucle du programme while (!done && SDL_PollEvent(&event)) { switch (event.type) { case (SDL_QUIT): { // Dans le cas de fermeture de fenêtre done = SDL_TRUE; break; } case (SDL_KEYDOWN): { SDL_Log("L'utilisateur vient juste de presser la touche %s", SDL_GetKeyName(event.key.keysym.sym)); } } } SDL_Delay(1); // Repose votre OS durant quelques millisecondes (je déconseille de mettre > 10 car inutile) } SDL_DestroyWindow(window); // On ferme la fenêtre visuellement et on la détruit en mémoire SDL_Quit(); // Nettoyage des allocations mémoire return 0; }
Avec ce code vous devriez comprendre comment faire une fenêtre et comment se passe les évènements. Pour être plus clair : Chaque fois que l'application appelle SDL_PollEvent, le premier évènement qui attend d'être traité et récupéré et l'application peut le manipuler (faire des conditions, avoir un comportement selon le type ou une valeur).
(en)la liste des events sur le wiki officiel
Un Event peut avoir comme type :
- key pour les touches de clavier
- motion pour les mouvements de souris
- button pour les click de souris
- (plein d'autre voir la doc au-dessus)
Si l'Event est de type key alors vous pouvez avoir :
- sont type : appuyé SDL_KEYDOWN ou relâché SDL_KEYUP
- sont keysym : c'est à dire sa valeur
Si l'Event est de type mouse alors vous pouvez avoir :
Si l'Event est de type button alors vours pouvez avoir :
Il y a beaucoup d'autre type d'Event voir la doc au-dessus
Compilez !
Nous utilisons SDL2 donc il faut faire :
gcc -o prog -Wall main.c `sdl2-config --cflags --libs`
Executez !
Et voilà ! votre exécutable prêt à être exécuté via
./prog
Notre second programme
Ici on va écrire dans la fenêtre
Inclure une librairie annexe
Ça va être un peu spécial puisque nous aurons besoin de sdl2-ttf.
On doit bien évidemment inclure SDL_tff.h pour utiliser les fonctions de cette librairie.
#include "SDL_ttf.h"
Compilez !
Nous utilisons SDL2 et SDL2_tff donc il faut faire :
gcc -o window window.c -Wall `sdl2-config --cflags --libs` -lSDL2_ttf
