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 20/10/2020, 18:35] – meilleure présentation et correction syntaxe amiralgabysdl [Le 31/01/2021, 21:56] (Version actuelle) – [Bibliothèques complémentaires] plus de lisibilité et de cohérence Amiralgaby
Ligne 1: Ligne 1:
 +{{tag>Xenial programmation }}
  
 +----
 +
 +====== 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|Civilization II]] sous Linux et le jeu [[wpfr>Doom]] sous BeOS.
 +
 +Cette page traite des 2 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]]).
 +
 +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]]**.
 +
 +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  =====
 +
 +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
 +
 +===== Installer la version pour les développeurs =====
 +
 +
 +[[:tutoriel:comment_installer_un_paquet|Installez le paquet]]  **[[apt>libsdl2-dev]]** pour utiliser SDL2 mais le paquet **[[apt>libsdl1.2-dev ]]** est toujours utilisable.
 +
 +
 +
 +===== Compiler un programme en C/SDL avec GCC ou g++=====
 +
 +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` 
 +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 =====
 +
 +Vous pouvez trouver une liste complète des librairies annexes avec cette commande :
 +
 +  sudo apt search libsdl
 +
 +----
 +
 +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 ^
 +|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]]** |
 +
 +----
 +
 +Celui-ci pour les bibliothèques annexes de SDL2
 +
 +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 ^
 +|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]]** |
 +
 +==== SDL_mixer (Audio) ====
 +Cette librairie annexe permet la gestion de l'**audio** [[https://www.libsdl.org/projects/SDL_mixer/ | site officiel]] de cette librairie 
 +
 +
 +==== 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).
 +
 +[[https://www.libsdl.org/projects/SDL_ttf/ | site officiel]]
 +
 +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]]
 +
 +==== 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 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
 +  gcc -o prog fichier1.c fichier2.c `sdl2-config --cflags --libs` -lSDL2_ttf
 +
 +===== 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 :
 +  * [[https://zestedesavoir.com/tutoriels/1014/utiliser-la-sdl-en-langage-c/|Zest de savoir]] (dernière mise à jour 27/12/2018)
 +  * [[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]] (dernière mise à jour 09/06/2020)
 +
 +Voir aussi, si pour préférez [[:python]], la librairie [[wpfr>pygame]]
 +
 +----
 +
 +//Contributeurs : [[:utilisateurs:lost-in-the-shell]], [[:utilisateurs:sully]], [[:utilisateurs:amiralgaby]].//