| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| sdl [Le 24/01/2022, 15:56] – [SDL : Simple DirectMedia Layer] typo. +précision lien lyondif02 | sdl [Le 17/05/2025, 14:44] (Version actuelle) – correction mineures Amiralgaby |
|---|
| {{tag>Focal Bionic programmation }} | {{tag>Noble programmation}} |
| |
| ---- | ---- |
| |
| Elle possède plusieurs bibliothèques annexes gérant chacune des éléments additionnels : images, polices, réseau, sons, etc. | Elle possède plusieurs bibliothèques annexes gérant chacune des éléments additionnels : images, polices, réseau, sons, etc. |
| ===== Pour une utilisation simple ===== | |
| |
| [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt>libsdl1.2debian]]**. | <note>La version 3 de SDL (SDL3) est en cours de développement, son principal but est de fournir une totale compatibilité avec le compositeur de fenêtre [[wayland]].</note> |
| |
| | ===== Installation ===== |
| | <note>Si vous commencez un projet, préférez la version stable (SDL2) ou en la version en cours de développement (SDL3) 8-)</note> |
| | |
| | ==== Première version de SDL ==== |
| | Pour installer les fichiers de développement, installez le paquet [[apt>libsdl1.2-dev]]. |
| | Pour la version 1 stable [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt>libsdl1.2debian]]** |
| | |
| | ==== Pour une utilisation simple de SDL2 ==== |
| La **[[apt>libsdl2-2.0-0]]** permet de gérer plusieurs fenêtres et est celle couramment utilisée | La **[[apt>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) | (voir plus bas pour une utilisation simple des librairies complémentaires) |
| |
| ===== Installation complète ===== | ==== Installation complète de SDL2 ==== |
| Utiliser la commande suivante pour installer SDL2 avec toutes ces libraires: | 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 | 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 pour les développeurs ===== | ==== Installer la version SDL2 pour les développeurs ==== |
| | [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt>libsdl2-dev]]**. |
| |
| | ==== 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 [[https://github.com/libsdl-org/SDL|SDL (GitHub)]]. Elle est très simple à compiler. |
| |
| [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt>libsdl2-dev]]** pour utiliser SDL2 mais le paquet **[[apt>libsdl1.2-dev ]]** est toujours utilisable. | 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 ===== | ===== Bibliothèques complémentaires ===== |
| |
| ^ Nom ^ Utilité ^ installation stable SDL1 ^ installation dev SDL1 ^ | ^ Nom ^ Utilité ^ installation stable SDL1 ^ installation dev SDL1 ^ |
| |mixer| gestion de l'audio | **[[apt>libsdl-mixer1.2|libsdl-mixer1.2]]**| **[[apt>libsdl-mixer1.2-dev|libsdl-mixer1.2-dev]]** | | |mixer| gestion de l'audio | **[[apt>libsdl-mixer1.2|libsdl-mixer1.2]]**| **[[apt>libsdl-mixer1.2-dev|libsdl-mixer1.2-dev]]** | |
| |ttf| écrire sur la fenêtre| **[[apt>libsdl-ttf1.2|libsdl-ttf1.2]]**| **[[apt>libsdl-ttf1.2-dev|libsdl-ttf1.2-dev]]** | | |ttf| écrire sur la fenêtre| **[[apt>libsdl-ttf1.2|libsdl-ttf1.2]]**| **[[apt>libsdl-ttf1.2-dev|libsdl-ttf1.2-dev]]** | |
| |image| gestion d'image | **[[apt>libsdl-image1.2|libsdl-image1.2]]**| **[[apt>libsdl-image1.2-dev|libsdl-image1.2-dev]]** | | |image| gestion d'image | **[[apt>libsdl-image1.2|libsdl-image1.2]]**| **[[apt>libsdl-image1.2-dev|libsdl-image1.2-dev]]** | |
| |
| ^ Nom ^ Utilité ^ installation stable SDL2 ^ installation dev SDL2 ^ | ^ Nom ^ Utilité ^ installation stable SDL2 ^ installation dev SDL2 ^ |
| |mixer| gestion de l'audio | **[[apt>libsdl2-mixer-2.0-0|libsdl2-mixer-2.0-0]]**| **[[apt>libsdl2-mixer-dev|libsdl2-mixer-dev]]** | | |mixer| gestion de l'audio | **[[apt>libsdl2-mixer-2.0-0|libsdl2-mixer-2.0-0]]**| **[[apt>libsdl2-mixer-dev|libsdl2-mixer-dev]]** | |
| |ttf| écrire sur la fenêtre| **[[apt>libsdl2-ttf-2.0-0|libsdl2-ttf2.0-0]]**| **[[apt>libsdl2-ttf-dev|libsdl2-ttf-dev]]** | | |ttf| écrire sur la fenêtre| **[[apt>libsdl2-ttf-2.0-0|libsdl2-ttf2.0-0]]**| **[[apt>libsdl2-ttf-dev|libsdl2-ttf-dev]]** | |
| |image| gestion d'image | **[[apt>libsdl2-image-2.0-0|libsdl2-image-2.0-0]]**| **[[apt>libsdl2-image-dev|libsdl2-image-dev]]** | | |image| gestion d'image | **[[apt>libsdl2-image-2.0-0|libsdl2-image-2.0-0]]**| **[[apt>libsdl2-image-dev|libsdl2-image-dev]]** | |
| |
| ==== SDL_mixer (Audio) ==== | ==== SDL_mixer (Audio) ==== |
| Cette librairie annexe permet la gestion de l'**audio** [[https://www.libsdl.org/projects/SDL_mixer/ | site officiel]] de cette librairie | Cette librairie annexe permet la gestion de l'**audio** [[https://www.libsdl.org/projects/SDL_mixer/ | site officiel]] de cette librairie |
| |
| ==== SDL_ttf (Écriture dans fenêtre graphique)==== | ==== SDL_ttf (Écriture dans fenêtre graphique)==== |
| |
| ===== Compiler un programme en C/SDL avec GCC ou g++===== | ===== Compiler un programme en C/SDL avec GCC ou g++===== |
| <note>Vous devez avoir installé la version développeur pour compiler vos programmes. **Si vous avez installé le paquet libsdl2-dev et que vous programmez avec SDL2, utilisez sdl2-config au lieu de sdl-config.**</note> | <note>Vous devez avoir installé la version développeur pour compiler vos programmes. **dans votre code vous devez avoir inclus SDL.h.** </note> |
| **dans votre code vous devez avoir inclus SDL.h.** | <note important>Si vous utilisez SDL1 au lieu de SDL2, alors utilisez **sdl-config** au lieu de **sdl2-config**</note> |
| |
| 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 : | 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 ... `sdl-config --cflags --libs` | gcc -o executable fichier1.c fichier2.c fichier3.c ... $(sdl2-config --cflags --libs) |
| gcc peut etre remplacé par g++ si vous programmez en C++. | gcc peut etre remplacé par g++ si vous programmez en C++. |
| |
| Pour compiler plusieurs fichiers séparément puis les linker, utilisez : | Pour compiler plusieurs fichiers séparément puis les linker, utilisez : |
| gcc -c -Wall -Wextra main.c `sdl-config --cflags` | gcc -c -Wall -Wextra main.c $(sdl2-config --cflags) |
| gcc -c -Wall -Wextra fichier1.c `sdl-config --cflags` | gcc -o executable main.o fichier1.o $(sdl2-config --libs) |
| gcc -o executable main.o fichier1.o `sdl-config --libs` | |
| |
| Simplement, sans modifier la variable [[:variables_d_environnement#variables_liees_aux_emplacements_de_fichiers|PATH]], avec : | Pour exécuter : |
| |
| ./executable | ./executable |
| |
| ===== Compiler vos programmes SDL avec des librairies annexes ===== | ===== Compiler vos programmes SDL avec des librairies annexes ===== |
| <note>Les links doivent être placés après ''-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</note> | <note>Les links doivent être placés après ''-lSDL_main'' et ''-lSDL'' pour **SDL1** ou après ''-lSDL2_main'' et ''-lSDL2'' si vous utilisez **SDL2**, sauf si vous utilisez sdl-config</note> |
| Toutes les librairies se link en respectant ce modèle : ''-lSDL_**type**'' pour SDL1 et ''-lSDL2_**type**'' pour SDL2 | Toutes les librairies se link en respectant ce modèle : ''-lSDL_**type**'' pour SDL1 et ''-lSDL2_**type**'' pour SDL2 |
| |
| Par exemple : | Par exemple : |
| gcc -o prog fichier1.c fichier2.c `sdl-config --cflags --libs` -lSDL_mixer | gcc -o prog fichier1.c fichier2.c $(sdl-config --cflags --libs) -lSDL_mixer # Pour SDL1 avec SDL_mixer |
| gcc -o prog fichier1.c fichier2.c `sdl2-config --cflags --libs` -lSDL2_ttf | gcc -o prog fichier1.c fichier2.c $(sdl2-config --cflags --libs) -lSDL2_ttf # Pour SDL2 avec SDL2_ttf |
| |
| ===== Pour aller plus loin ===== | ===== 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 : | 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 : |
| * [[https://zestedesavoir.com/tutoriels/1014/utiliser-la-sdl-en-langage-c/|Zeste de savoir]] (dernière mise à jour 27/12/2018) | * [[utilisateurs:amiralgaby:comment_s_adapter_a_la_sdl|Premier programme avec la bibliothèque SDL]] |
| * [[https://loka.developpez.com/tutoriel/sdl/|Développez.com]] | * [[https://zestedesavoir.com/tutoriels/1014/utiliser-la-sdl-en-langage-c/|Zeste de savoir]] |
| * [[https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/17117-installation-de-la-sdl|OpenClassrooms]] (dernière mise à jour 09/06/2020) | * [[https://loka.developpez.com/tutoriel/sdl/|Développez.com]] |
| | * [[https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/17117-installation-de-la-sdl|OpenClassrooms]] |
| |
| ---- | ---- |
| |
| //Contributeurs : [[:utilisateurs:lost-in-the-shell]], [[:utilisateurs:sully]], [[:utilisateurs:amiralgaby]].// | //Contributeurs : [[:utilisateurs:lost-in-the-shell]], [[:utilisateurs:sully]], [[:utilisateurs:amiralgaby]].// |