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édentes Révision précédente
Prochaine révision
Révision précédente
sdl [Le 31/01/2021, 21:56]
Amiralgaby [Bibliothèques complémentaires] plus de lisibilité et de cohérence
sdl [Le 19/03/2023, 16:52] (Version actuelle)
Amiralgaby SDL3 en cours de développement + maj de la partie installation
Ligne 1: Ligne 1:
-{{tag>Xenial ​programmation }}+{{tag>Focal Bionic ​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 SL2 ====
 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.
- +
-===== 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.** +
- +
-Simplement, sans modifier la variable [[:​variables_d_environnement#​variables_liees_aux_emplacements_de_fichiers|PATH]],​ avec : +
- +
-  ./​executable+
  
 ===== Bibliothèques complémentaires ===== ===== Bibliothèques complémentaires =====
Ligne 61: Ligne 53:
  
 ^ 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 75: Ligne 67:
  
 ^ 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 82: 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 99: 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 =====
Ligne 105: Ligne 113:
  
 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 SDL2_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/​|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]].//​
  • sdl.1612126590.txt.gz
  • Dernière modification: Le 31/01/2021, 21:56
  • par Amiralgaby