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
Dernière révision Les deux révisions suivantes
sdl [Le 20/10/2020, 16:24]
Amiralgaby Ajout de spécificité aux bibliothèques
sdl [Le 11/09/2022, 11:32]
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
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. +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 avec le langage C++ nativement ​et 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 ===== ===== Pour une utilisation simple =====
  
 [[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt>​libsdl1.2debian]]**. [[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt>​libsdl1.2debian]]**.
  
 +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)
  
Ligne 21: Ligne 23:
  
 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 pour les développeurs =====
Ligne 28: Ligne 30:
 [[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] ​ **[[apt>​libsdl2-dev]]** pour utiliser SDL2 mais le paquet **[[apt>​libsdl1.2-dev ]]** est toujours utilisable. [[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] ​ **[[apt>​libsdl2-dev]]** pour utiliser SDL2 mais le paquet **[[apt>​libsdl1.2-dev ]]** est toujours utilisable.
  
 +===== Bibliothèques complémentaires =====
  
 +Vous pouvez trouver une liste complète des librairies annexes avec cette commande :
  
-===== Compiler un programme en C/SDL avec GCC ou g++=====+  sudo apt search libsdl
  
-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 :+----
  
-  gcc -o executable fichier1.c fichier2.c fichier3.c ...  `sdl-config --cflags --libs`  +Le tableau ci-dessous contient des liens pour télécharger les paquets des librairies annexes de la SDL1 :
-gcc peut etre remplacé par g++ si vous programmez en C++.+
  
-Pour compiler plusieurs fichiers séparément puis les linker, utilisez : +^ Nom ^ Utilité ^ installation stable SDL1 ^ installation dev SDL1 ^ 
-  ​gcc ​--Wall -Wextra main.c `sdl-config ​--cflags` +|mixer| gestion de l'​audio | **[[apt>​libsdl-mixer1.2|libsdl-mixer1.2]]**| **[[apt>​libsdl-mixer1.2-dev|libsdl-mixer1.2-dev]]** | 
-  ​gcc ​--Wall -Wextra fichier1.c `sdl-config ​--cflags` +|ttf| écrire sur la fenêtre| **[[apt>​libsdl-ttf1.2|libsdl-ttf1.2]]**| **[[apt>​libsdl-ttf1.2-dev|libsdl-ttf1.2-dev]]** | 
-  ​gcc ​-o executable main.o fichier1.o `sdl-config ​--libs`+|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]]** |
  
-**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 :+Celui-ci pour les bibliothèques annexes de SDL2
  
-  PATH=.:​$PATH +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.
-  executable +
-   +
-Ou, plus simplement, sans modifier la variable PATH, avec :+
  
-  ​./executable+^ 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]]** |
  
-===== Bibliothèques complémentaires =====+==== SDL_mixer (Audio) ​==== 
 +Cette librairie annexe permet la gestion de l'​**audio** [[https://​www.libsdl.org/​projects/​SDL_mixer/​ | site officiel]] de cette librairie
  
-Pour installer SDL_image, ​SDL_ttf ​et SDL_mixer: [[:​tutoriel:​comment_installer_un_paquet|installez les paquets]] +==== SDL_ttf ​(Écriture dans fenêtre graphique)==== 
-  +Cette librairie est utile pour écrire dans une fenêtreelle s'​appuie sur freetype2 (donc il faut freetype2).
-**Version stable : [[apt://​libsdl-image1.2,​libsdl-mixer1.2,​ libsdl-ttf2.0-0libsdl-mixer1.2]]**.+
  
-**Version en développement : [[apt://libsdl-image1.2-dev , libsdl-mixer1.2-dev, libsdl-ttf2.0-dev]]**.+[[https://www.libsdl.org/​projects/​SDL_ttf/​ | site officiel]]
  
-Les options respectives à ajouter à la compilation avec GCC (après **-lSDLmain -lSDL //ou// -lSDL2main -lSDL2**) sont : +Vous aurez besoin de polices d'​écriture. 
-<​code>​ +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]]
--lSDL_image # pour SDL_image +
--lSDL_ttf # pour SDL_ttf +
--lSDL_mixer # pour SDL_mixer +
-</code>+
  
-Si vous utilisez la version 2 d'une bibliothèque : +==== SDL_image (gestion des images) ==== 
-<​code>​ +Cette librairie permet de charger des images, ​d'analyser un fichier ​pour connaître son format d'​image. 
--lSDL2_ttf # par exemple ​pour SDL2_ttf +[[https://​www.libsdl.org/​projects/​SDL_image| site officiel]]
-</code>+
  
-==== SDL_mixer ​(Audio) ==== +==== SDL_net ​(gestion des paquets/​trames) ==== 
-Cette librairie ​annexe ​permet ​la gestion ​de l'​**audio** ​[[https://​www.libsdl.org/​projects/​SDL_mixer/ | site officiel]] ​de cette librairie ​+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]]
  
-Pour l'​installer : +===== Compiler un programme en C/SDL avec GCC ou g++===== 
-  * utilisation simple ​version ​1: **[[apt>​libsdl1.2-mixer]]** +<​note>​Vous devez avoir installé la version ​développeur pour compiler vos programmes. ​**dans votre code vous devez avoir inclus SDL.h.** </​note>​ 
-  * utilisation simple version 2: **[[apt>libsdl2-mixer-2.0-0]]** +<note important>Si vous utilisez SDL1 au lieu de SDL2, alors utilisez ​**sdl-config** au lieu de **sdl2-config**</​note>​
-Pour compiler votre programme avec cette bibliothèque ​vous devez ajouter le link **-lSDL_mixer** ou **-lSDL2_mixer**+
  
-//Exemple si vous développez avec SDL2 et SDL2_mixer ://  +Placez-vous dans le répertoire où sont enregistrées vos sourcesL'​installation de SDL fourni un petit script sdl-config ​qui, appelé avec les paramètres ​--cflags ​ou --libs, renseigne correctement le compilateur. tapez alors :
-<​code>​gcc -o my_program fichier1.c fichier2.c `sdl2-config --cflags --libs` -lSDL2_mixer</​code>​+
  
 +  gcc -o executable fichier1.c fichier2.c fichier3.c ...  $(sdl2-config --cflags --libs) ​
 +gcc peut etre remplacé par g++ si vous programmez en C++.
  
-==== SDL_tff (écriture dans fenêtre graphique)==== +Pour compiler plusieurs fichiers séparément puis les linker, utilisez : 
-Cette librairie est utile pour écrire dans une fenêtre, elle s'​appuie sur freetype2 ​(donc il faut freetype2+  gcc -c -Wall -Wextra main.c $(sdl2-config --cflags
-Elle a 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]]+  gcc -o executable main.o fichier1.o $(sdl2-config --libs)
  
-Pour l'​installer ​: +Pour exécuter ​:
-  * utilisation simple version 1: **[[apt>​libsdl_tff-2.0.0]]** +
-  * utilisation simple version 2: **[[apt>​libsdl2_tff-2.0.0]]** +
-Pour compiler votre programme avec SDL_ttf, vous devez ajouter le link **-lSDL_ttf** ou **-lSDL2_ttf**+
  
-//​Exemple ​si vous utilisez SDL2 et SDL2_ttf//​ +  ./executable 
-<code>gcc -o my_program ​fichier1.c fichier2.c ​`sdl2-config --cflags --libs-lSDL2_ttf</​code>​+ 
 +===== 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 :
-  * [[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]].//
  • sdl.txt
  • Dernière modification: Le 19/03/2023, 16:52
  • par Amiralgaby