Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
sdl [Le 30/10/2020, 12:07] – ajout de correctif Amiralgabysdl [Le 17/05/2025, 14:44] (Version actuelle) – correction mineures Amiralgaby
Ligne 1: Ligne 1:
-{{tag>Xenial programmation }}+{{tag>Noble programmation}}
  
 ---- ----
Ligne 5: Ligne 5:
 ====== SDL : Simple DirectMedia Layer ====== ====== SDL : Simple DirectMedia Layer ======
  
-La [[http://www.libsdl.org/|SDL]] //(Simple DirectMedia Layer)// est une [[wpfr>Bibliothèque logicielle]] permettant de développer des programmes gérant le son, la vidéo, le clavier, la souris et le lecteur CD. +La [[http://www.libsdl.org/|SDL]] //(Simple DirectMedia Layer)// est une [[wpfr>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 [[wpfr>Civilization|Civilization II]] sous Linux et le jeu [[wpfr>Doom]] sous BeOS.+Elle a notamment été utilisée pour le portage du jeu [[wpfr>Civilization (série de jeux vidéo)|Civilization II]] sous Linux et le jeu [[wpfr>Doom]] sous BeOS.
  
-Cette page traite des versions de la SDL.+Cette page traite des deux versions de la SDL.
  
-La bibliothèque est compatible avec le langage C++ nativement et possède des bindings pour d'autres langages (la liste complète est disponible sur le [[http://www.libsdl.org/|site officiel]]).+La bibliothèque est compatible nativement avec le langage C++ et possède des //bindings// pour dautres langages – la liste complète est disponible sur la page officielle des [[http://www.libsdl.org/languages.php|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 +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:
-<code>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</code>+  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.
- +
-===== Compiler un programme en C/SDL avec GCC ou g++===== +
- +
-Placez-vous dans le répertoire où sont enregistrées vos sourcesL'installation d'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 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 `sdl-config --cflags` +
-  gcc -c -Wall -Wextra fichier1.c `sdl-config --cflags` +
-  gcc -o executable main.o fichier1.o `sdl-config --libs` +
- +
-**Si vous avez installé le paquet libsdl2-dev et que vous programmez avec SDL2, utilisez sdl2-config au lieu de sdl-config.** +
- +
-Une fois la compilation terminée, vous pourrez lancer votre programme avec : +
- +
-  PATH=.:$PATH +
-  executable +
-   +
-Ou, plus simplement, sans modifier la variable PATH, avec : +
- +
-  ./executable+
  
 ===== Bibliothèques complémentaires ===== ===== Bibliothèques complémentaires =====
Ligne 59: Ligne 46:
 Vous pouvez trouver une liste complète des librairies annexes avec cette commande : Vous pouvez trouver une liste complète des librairies annexes avec cette commande :
  
-<code>sudo apt search libsdl</code>+  sudo apt search libsdl
  
 ---- ----
Ligne 65: Ligne 52:
 Le tableau ci-dessous contient des liens pour télécharger les paquets des librairies annexes de la SDL1 : 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** | +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]]** |
Ligne 77: Ligne 64:
 Celui-ci pour les bibliothèques annexes de SDL2 Celui-ci pour les bibliothèques annexes de SDL2
  
-Toutes bibliothèques SDL2 sont classifiées ainsi : __libsdl2-**type**-2.0-0__ pour les versions stable et __libsdl2-**type**-dev__ pour celles en développement. Grâce à cette indexage vous pouvez les installer facilement depuis un terminal.+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** | +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]]** |
Ligne 87: Ligne 74:
  
 ==== 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_tff (Écriture dans fenêtre graphique)====+
 Cette librairie est utile pour écrire dans une fenêtre, elle s'appuie sur freetype2 (donc il faut freetype2). Cette librairie est utile pour écrire dans une fenêtre, elle s'appuie sur freetype2 (donc il faut freetype2).
  
Ligne 104: Ligne 90:
 ==== SDL_net (gestion des paquets/trames) ==== ==== SDL_net (gestion des paquets/trames) ====
 Cette librairie permet de former des sockets et des paquets pour les protocoles TCP et UDP [[https://www.libsdl.org/projects/SDL_net/ | site officiel]] Cette librairie permet de former des sockets et des paquets pour les protocoles TCP et UDP [[https://www.libsdl.org/projects/SDL_net/ | site officiel]]
 +
 +===== Compiler un programme en C/SDL avec GCC ou g++=====
 +<note>Vous devez avoir installé la version développeur pour compiler vos programmes. **dans votre code vous devez avoir inclus SDL.h.** </note>
 +<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 :
 +
 +  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 ===== ===== Compiler vos programmes SDL avec des librairies annexes =====
-<note>Les links doit être placés après -lSDL_main et -lSDL pour **SDL1** ou après -lSDL2_main et -lSDL2 si vous utilisez **SDL2**</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
  
-Avec ces deux exemples vous comprendrez le principe qui est applicables à toutes les librairies +Par exemple : 
-|**Nom**| **link SDL1** | **link SDL2**| +  gcc -o prog fichier1.c fichier2.c $(sdl-config --cflags --libs-lSDL_mixer # Pour SDL1 avec SDL_mixer 
-|mixer| -lSDL_mixer | -lSDL2_mixer | +  gcc -o prog fichier1.c fichier2.c $(sdl2-config --cflags --libs-lSDL2_ttf # Pour SDL2 avec SDL2_ttf
-|ttf| -lSDL_ttf | -lSDL2_ttf| +
- +
-<code>gcc -o prog fichier1.c fichier2.c `sdl-config --cflags --libs-lSDL_mixer</code> +
-<code>gcc -o prog fichier1.c fichier2.c `sdl2-config --cflags --libs-lSDL2_ttf</code>+
  
 ===== 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/|Zest 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]]
-Voir aussi, si pour préférez [[:python]], la librairie [[wpfr>pygame]]+
  
 ---- ----
  
 //Contributeurs : [[:utilisateurs:lost-in-the-shell]], [[:utilisateurs:sully]], [[:utilisateurs:amiralgaby]].// //Contributeurs : [[:utilisateurs:lost-in-the-shell]], [[:utilisateurs:sully]], [[:utilisateurs:amiralgaby]].//