Tuto SDL2
Tuto SDL2
Tuto SDL2
Installation, configuration
et utilisation de la SDL2
sur CodeBlocks
F.Belabdelli
belabdelli@3il.fr
Etape 1 : Installation de CodeBlocks
Télécharger (si vous ne l’avez pas encore) la dernière version
de CodeBlocks avec le compilateur MinGW :
http://www.codeblocks.org/downloads/binaries/
Double-cliquer sur
CodeBlocks sera installé dans le
dossier suivant :
C:\Program Files\CodeBlocks
https://zestedesavoir.com/tutoriels/461/utiliser-une-
bibliotheque-sous-windows-avec-mingw-ou-code-
blocks-en-langage-c/
2
Etape 2-1 : Installation de SDL2
Choisir : SDL2-devel-2.26.3-mingw.zip
Déplacer cette archive dans un dossier comme :
C:/Dev23/
Décompresser l’archive. Vous aller obtenir :
C:\dev23\SDL2-2.26.3
x86_64-w64-mingw32 : machine 64 bits
i686-w64-mingw32 : machine 32 bits
3
Etape 2-2 : Installation de SDL2
4
Etape 3-1 : Création d’un projet Console Application
5
Etape 3-2 : Création d’un projet Console Application
6
Etape 4-1 : Configuration de CodeBlocks
7
Etape 4-2 : Configuration de CodeBlocks
C:\dev23\SDL2-2.26.3\x86_64-w64-mingw32\include
8
Etape 4-3 : Configuration de CodeBlocks
C:\dev23\SDL2-2.26.3\x86_64-w64-mingw32\lib
9
Etape 4-4 : Configuration de CodeBlocks
libSDL2main.a
libSDL2.dll.a
10
Etape 4-6 : Configuration de CodeBlocks
11
Etape 5 : Tester un programme SDL2
#include <stdlib.h> if( pWindow )
#include <stdio.h> {
#include <SDL2/SDL.h> SDL_Delay(3000); /* Attendre trois secondes, que
int main(int argc, char** argv) l'utilisateur voit la fenêtre */
{ SDL_DestroyWindow(pWindow);
/* Initialisation simple */ }
if (SDL_Init(SDL_INIT_VIDEO) != 0 ) else
{ {
fprintf(stdout,"Échec de l'initialisation de la SDL fprintf(stderr,"Erreur de création de la fenêtre:
(%s)\n",SDL_GetError()); %s\n",SDL_GetError());
return -1; }
} SDL_Quit();
/* Création de la fenêtre */ return 0;
SDL_Window* pWindow = NULL; }
pWindow = SDL_CreateWindow("Ma premiere application
SDL2",SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED, 640, 480,
SDL_WINDOW_SHOWN);
12
Première fenêtre
13
Introduction à SDL2
https://zestedesavoir.com/tutoriels/pdf/1014/utiliser-la-sdl-en-langage-c.pdf
14
Initialiser la SDL2
https://wiki.libsdl.org/SDL2/SDL_Init
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO);
Drapeaux Description
SDL_INIT_VIDEO Initialise le système de gestion de rendu
SDL_INIT_JOYSTICK Initialise le système de gestion des joysticks
SDL_INIT_GAMECONTROLLER Initialise le système de gestion des contrôleurs de jeux
SDL_INIT_EVENTS Initialise le système de gestion des évènements
SDL_INIT_EVERYTHING Permet de tout initialiser
SDL_INIT_TIMER Initialise le système de gestion du temps
SDL_INIT_AUDIO Initialise le système de gestion de l’audio
15
Créer une fenêtre
https://wiki.libsdl.org/SDL2/SDL_CreateWindow
SDL_CreateWindow("Ma premiere application SDL2",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
640,
480,
SDL_WINDOW_SHOWN);
Drapeaux Description
SDL_WINDOW_FULLSCREEN Crée une fenêtre en plein écran
SDL_WINDOW_FULLSCREEN_DESKTOP Crée une fenêtre en plein écran à la résolution du bureau
SDL_WINDOW_SHOWN Crée une fenêtre visible
SDL_WINDOW_HIDDEN Crée une fenêtre non visible
SDL_WINDOW_BORDERLESS Crée une fenêtre sans bordures
SDL_WINDOW_RESIZABLE Crée une fenêtre redimensionnable
SDL_WINDOW_MINIMIZED Crée une fenêtre minimisée
SDL_WINDOW_MAXIMIZED Crée une fenêtre maximisée
16
Dessiner dans la fenêtre
https://wiki.libsdl.org/SDL2/SDL_CreateRenderer
Il faut utiliser un rendu (SDL_Renderer) pour dessiner dans une
fenêtre
Drapeaux Description
SDL_RENDERER_SOFTWARE Le renderer est logiciel, le rendu sera effectué par le CPU et les
données seront stockées en mémoire vive.
SDL_RENDERER_ACCELERATED Le renderer utilise l’accélération matérielle. Les données sont en
mémoire vidéo, plus rapide que la mémoire vive.
SDL_RENDERER_PRESENTVSYNC La mise à jour de la fenêtre de rendu est synchronisé avec la fréquence
de rafraîchissement de l’écran.
17
Elément de dessin de base : le point et le rectangle
https://wiki.libsdl.org/SDL2/SDL_Rect
(0,0)
18
Dessiner un rectangle
19
Quelques fonctions utiles sur les Rectangles
https://wiki.libsdl.org/SDL2/CategoryRect
Vérifie si 2 rectangles ont une intersection :
SDL_bool SDL_HasIntersection(const SDL_Rect* A, const SDL_Rect* B)
Vérifie si 2 rectangles ont une intersection et donne le rectangle intersection
SDL_bool SDL_IntersectRect(const SDL_Rect* A, const SDL_Rect* B, SDL_Rect* result)
Vérifie si un point est dans un restangle :
SDL_bool SDL_PointInRect(const SDL_Point* p, const SDL_Rect* r)
Dessiner un rectangle :
int SDL_RenderDrawRect(SDL_Renderer* renderer, const SDL_Rect* rect)
20
Charger une image de fond
SDL_RenderPresent(pRenderer);
21
Afficher une image
22