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 14/07/2020, 11:41]
amiralgaby Ajout d'une note pour activer la libs SDL2
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 ​BROUILLON}}+{{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.
 +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.
  
-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 avec plusieurs langages (la liste complète est disponible sur le [[http://​www.libsdl.org/​|site officiel]]. +Cette page traite des deux versions ​de la SDL.
-Elle a notamment été utilisée pour le portage du jeu [[wpfr>​Civilization|Civilization II]] sous Linux et le jeu [[wpfr>​Doom]] sous BeOS.+
  
 +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 [[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.
  
-===== Pour une utilisation simple =====+<​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>​
  
-[[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt>libsdl1.2debian]]**.+===== 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>
  
-(voir plus bas pour une utilisation simple des librairies complémentaires)+==== 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]]**
  
-===== Installation complète ​ =====+==== 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 
 +(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: 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.
  
 +===== Bibliothèques complémentaires =====
  
-===== Compiler un programme en C/SDL avec GCC ou g++=====+Vous pouvez trouver une liste complète des librairies annexes ​avec cette commande :
  
-Placez-vous dans le répertoire où sont enregistrées vos sources. L'​installation d'SDL fourni un petit script sdl-config qui, appelé avec les paramètres --cflags ou --libs, renseigne correctement le compilateur. tapez alors :+  sudo apt search libsdl
  
-  gcc -o executable fichier1.c fichier2.c fichier3.c ...  `sdl-config ​--cflags --libs`  +----
-gcc peut etre remplacé par g++ si vous programmez en C++.+
  
-<​note>​la commande `sdl-config --cflags --libs` est substituée ​pour donner +Le tableau ci-dessous contient des liens pour télécharger les paquets des librairies annexes de la SDL1 :
-**-I/​usr/​include/​SDL -D_GNU_SOURCE=1 -D_REENTRANT -L/​usr/​lib/​x86_64-linux-gnu -lSDL**+
  
-Si vous voulez utiliser SDL2 vous pouvez mettre ​-lSDL2 à la fin de votre commande +^ Nom ^ Utilité ^ installation stable SDL1 ^ installation dev SDL1 ^ 
-ce qui donnerai :+|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]]** | 
 +|image| gestion d'​image | **[[apt>​libsdl-image1.2|libsdl-image1.2]]**| **[[apt>​libsdl-image1.2-dev|libsdl-image1.2-dev]]** | 
 +|net| gestion du réseau| **[[apt>​libsdl-net1.2|libsdl-net1.2]]**| **[[apt>​libsdl-net1.2-dev|libsdl-net1.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]]** |
  
-<​code>​gcc ​-o executable *.c  `sdl-config ​--cflags --libs` -lSDL2</​code>​ +----
-</​note>​+
  
-Pour compiler plusieurs fichiers séparément puis les linker, utilisez : +Celui-ci pour les bibliothèques annexes de SDL2
-  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.**+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.
  
-Une fois la compilation terminée, vous pourrez lancer votre programme avec :+^ 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]]** | 
 +|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]]** | 
 +|net| gestion du réseau| **[[apt>​libsdl2-net-2.0-0|libsdl2-net-2.0-0]]**| **[[apt>​libsdl2-net-dev|libsdl2-net-dev]]** | 
 +|gfx| dessin/​effet graphique | **[[apt>​libsdl2-gfx-1.0-0|libsdl2-gfx-1.0-0]]** | **[[apt>​libsdl2-gfx-dev|libsdl2-gfx-dev]]** |
  
-  PATH=.:$PATH +==== SDL_mixer (Audio) ==== 
-  ​executable +Cette librairie annexe permet ​la gestion de l'​**audio** [[https://​www.libsdl.org/​projects/​SDL_mixer/​ | site officiel]] de cette librairie
-   +
-Ou, plus simplement, sans modifier ​la variable PATH, avec :+
  
-  ​./executable+==== 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).
  
-===== Bibliothèques complémentaires =====+[[https://​www.libsdl.org/​projects/​SDL_ttf/​ | site officiel]]
  
-Pour installer SDL_image, SDL_ttf et SDL_mixer: [[:tutoriel:​comment_installer_un_paquet|installez les paquets]] **[[apt://libsdl-image1.2,​libsdl-image1.2-dev,​libsdl-ttf2.0-0,libsdl-ttf2.0-dev,​libsdl-mixer1.2,​libsdl-mixer1.2-dev|libsdl-image1.2 ,​libsdl-image1.2-dev ,​libsdl-ttf2.0-0 ,​libsdl-ttf2.0-dev ,​libsdl-mixer1.2 ,​libsdl-mixer1.2-dev]]**.+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]]
  
-Les options respectives à ajouter à la compilation ​avec GCC (après ​**-lSDLmain ​-lSDL**sont : +==== SDL_image (gestion des images) ==== 
-<code> +Cette librairie permet de charger des images, d'​analyser un fichier pour connaître son format d'​image. 
--lSDL_image # pour SDL_image +[[https://​www.libsdl.org/​projects/​SDL_image/​ | site officiel]] 
--lSDL_ttf # pour SDL_ttf + 
--lSDL_mixer # pour SDL_mixer +==== SDL_net (gestion des paquets/​trames) ==== 
-</​code>​+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 ===== 
 +<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>​ 
 +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 ===== ===== 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 :
-  * [[http://fr.openclassrooms.com/|OpenClassrooms]] +  * [[utilisateurs:​amiralgaby:​comment_s_adapter_a_la_sdl|Premier programme avec la bibliothèque SDL]] 
-  * [[http://c.developpez.com/​|Développez.com]] +  * [[https://zestedesavoir.com/​tutoriels/​1014/​utiliser-la-sdl-en-langage-c/|Zeste de savoir]] 
-  * [[http://www.gnurou.org/writing/linuxmag/sdl|gnurou.org]] +  * [[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]].//
  • sdl.1594719717.txt.gz
  • Dernière modification: Le 14/07/2020, 11:41
  • par amiralgaby