SDL : Simple DirectMedia Layer
La SDL (Simple DirectMedia Layer) est une bibliothèque logicielle permettant de développer des programmes gérant le son, la vidéo, le clavier, la souris et le lecteur CD. Elle a notamment été utilisée pour le portage du jeu Civilization II sous Linux et le jeu Doom sous BeOS.
Cette page traite des deux versions de la SDL.
La bibliothèque est compatible nativement avec le langage C++ et possède des bindings pour d’autres langages – la liste complète est disponible sur la page officielle des liaisons avec les langages pour SDL.
Elle possède plusieurs bibliothèques annexes gérant chacune des éléments additionnels : images, polices, réseau, sons, etc.
Installation
Première version de SDL
Pour installer les fichiers de développement, installez le paquet libsdl1.2-dev. Pour la version 1 stable Installez le paquet libsdl1.2debian
Pour une utilisation simple de SL2
La libsdl2-2.0-0 permet de gérer plusieurs fenêtres et est celle couramment utilisée (voir plus bas pour une utilisation simple des librairies complémentaires)
Installation complète de SDL2
Utiliser la commande suivante pour installer SDL2 avec toutes ces libraires:
sudo apt install libsdl2-2.0-0 libsdl2-gfx-1.0-0 libsdl2-image-2.0-0 libsdl2-mixer-2.0-0 libsdl2-net-2.0-0 libsdl2-ttf-2.0-0
Installer la version SDL2 pour les développeurs
Version en cours de développement - compilation/installation de SDL3
La version 3 de SDL (qui est actuellement en développement) est disponible sur le GitHub du projet SDL (GitHub). Elle est très simple à compiler.
Clonez le dépôt git du projet et lancez la commande décrite dans le fichier INSTALL.txt
cmake -S . -B build && cmake --build build && cmake --install build
Ensuite pourrez l'installer et l'utiliser avec les fichiers d'entête <SDL3/SDL.h>
par exemple.
Bibliothèques complémentaires
Vous pouvez trouver une liste complète des librairies annexes avec cette commande :
sudo apt search libsdl
Le tableau ci-dessous contient des liens pour télécharger les paquets des librairies annexes de la SDL1 :
Nom | Utilité | installation stable SDL1 | installation dev SDL1 |
---|---|---|---|
mixer | gestion de l'audio | libsdl-mixer1.2 | libsdl-mixer1.2-dev |
ttf | écrire sur la fenêtre | libsdl-ttf1.2 | libsdl-ttf1.2-dev |
image | gestion d'image | libsdl-image1.2 | libsdl-image1.2-dev |
net | gestion du réseau | libsdl-net1.2 | libsdl-net1.2-dev |
gfx | dessin/effet graphique | libsdl-gfx1.2-5 | libsdl-gfx1.2-dev |
sound | format des fichiers sonores | libsdl-sound1.2 | libsdl-sound-dev |
Celui-ci pour les bibliothèques annexes de SDL2
Toutes bibliothèques SDL2 sont classifiées ainsi : libsdl2-nom-2.0-0 pour les versions stable et libsdl2-nom-dev pour celles en développement. Grâce à cette indexage vous pouvez les installer facilement depuis un terminal.
Nom | Utilité | installation stable SDL2 | installation dev SDL2 |
---|---|---|---|
mixer | gestion de l'audio | libsdl2-mixer-2.0-0 | libsdl2-mixer-dev |
ttf | écrire sur la fenêtre | libsdl2-ttf2.0-0 | libsdl2-ttf-dev |
image | gestion d'image | libsdl2-image-2.0-0 | libsdl2-image-dev |
net | gestion du réseau | libsdl2-net-2.0-0 | libsdl2-net-dev |
gfx | dessin/effet graphique | libsdl2-gfx-1.0-0 | libsdl2-gfx-dev |
SDL_mixer (Audio)
Cette librairie annexe permet la gestion de l'audio site officiel de cette librairie
SDL_ttf (Écriture dans fenêtre graphique)
Cette librairie est utile pour écrire dans une fenêtre, elle s'appuie sur freetype2 (donc il faut freetype2).
Vous aurez besoin de polices d'écriture. Voici des sites où vous pouvez trouver vos polices libres : Google Fonts , FontSquirrel.com , Fontain.org
SDL_image (gestion des images)
Cette librairie permet de charger des images, d'analyser un fichier pour connaître son format d'image. site officiel
SDL_net (gestion des paquets/trames)
Cette librairie permet de former des sockets et des paquets pour les protocoles TCP et UDP site officiel
Compiler un programme en C/SDL avec GCC ou g++
Placez-vous dans le répertoire où sont enregistrées vos sources. L'installation de SDL fourni un petit script sdl-config qui, appelé avec les paramètres –cflags ou –libs, renseigne correctement le compilateur. tapez alors :
gcc -o executable fichier1.c fichier2.c fichier3.c ... $(sdl2-config --cflags --libs)
gcc peut etre remplacé par g++ si vous programmez en C++.
Pour compiler plusieurs fichiers séparément puis les linker, utilisez :
gcc -c -Wall -Wextra main.c $(sdl2-config --cflags) gcc -o executable main.o fichier1.o $(sdl2-config --libs)
Pour exécuter :
./executable
Compiler vos programmes SDL avec des librairies annexes
-lSDL_main
et -lSDL
pour SDL1 ou après -lSDL2_main
et -lSDL2
si vous utilisez SDL2, sauf si vous utilisez sdl-config bien évidemment
Toutes les librairies se link en respectant ce modèle : -lSDL_type
pour SDL1 et -lSDL2_type
pour SDL2
Par exemple :
gcc -o prog fichier1.c fichier2.c $(sdl-config --cflags --libs) -lSDL_mixer # Pour SDL1 avec SDL2_mixer gcc -o prog fichier1.c fichier2.c $(sdl2-config --cflags --libs) -lSDL2_ttf # Pour SDL2 avec SDL2_ttf
Pour aller plus loin
Si vous savez déjà programmer en C/C++ et que vous voulez apprendre à utiliser la SDL pour vos programmes, il y a de très bons tutoriels :
Contributeurs : lost-in-the-shell, sully, amiralgaby.