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 29/10/2020, 19:30] – Finition pour des liens apt SDL2 amiralgabysdl [Le 17/05/2025, 14:44] (Version actuelle) – correction mineures Amiralgaby
Ligne 1: Ligne 1:
-{{tag>Xenial programmation BROUILLON}}+{{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 72: Ligne 59:
 |gfx| dessin/effet graphique | **[[apt>libsdl-gfx1.2-5|libsdl-gfx1.2-5]]** | **[[apt>libsdl-gfx1.2-dev|libsdl-gfx1.2-dev]]** | |gfx| dessin/effet graphique | **[[apt>libsdl-gfx1.2-5|libsdl-gfx1.2-5]]** | **[[apt>libsdl-gfx1.2-dev|libsdl-gfx1.2-dev]]** |
 |sound| format des fichiers sonores| **[[apt>libsdl-sound1.2|libsdl-sound1.2]]** | **[[apt>libsdl-sound-dev]]** | |sound| format des fichiers sonores| **[[apt>libsdl-sound1.2|libsdl-sound1.2]]** | **[[apt>libsdl-sound-dev]]** |
- 
  
 ---- ----
 +
 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)====
 +Cette librairie est utile pour écrire dans une fenêtre, elle s'appuie sur freetype2 (donc il faut freetype2).
  
-==== SDL_tff (Écriture dans fenêtre graphique)==== +[[https://www.libsdl.org/projects/SDL_ttf/ | site officiel]] 
-Cette librairie est utile pour écrire dans une fenêtre, elle s'appuie sur freetype2 (donc il faut freetype2) + 
-Elle a besoin de polices d'écriture.+Vous aurez besoin de polices d'écriture.
 Voici des sites où vous pouvez trouver vos polices libres : [[https://fonts.google.com/ | Google Fonts]] , [[https://www.fontsquirrel.com/ | FontSquirrel.com]] , [[https://fontain.org/ | Fontain.org]] Voici des sites où vous pouvez trouver vos polices libres : [[https://fonts.google.com/ | Google Fonts]] , [[https://www.fontsquirrel.com/ | FontSquirrel.com]] , [[https://fontain.org/ | 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.
 +[[https://www.libsdl.org/projects/SDL_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 [[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 `sdl-config --cflags --libs-lSDL_mixer</code> +
-<code>gcc -o prog `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]].//+//Contributeurs : [[:utilisateurs:lost-in-the-shell]], [[:utilisateurs:sully]], [[:utilisateurs:amiralgaby]].//