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 29/07/2020, 08:32]
79.91.215.183 [Bibliothèques complémentaires]
sdl [Le 30/03/2021, 12:11] (Version actuelle)
Amiralgaby Structuration plus logique
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.
-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]].+
 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|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/​languages.php|Liaison 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 ===== ===== 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 20: 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 27: 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 :
 +
 +  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 un programme en C/SDL avec GCC ou g++===== ===== Compiler un programme en C/SDL avec GCC ou g++=====
 +<​note>​Vous devez avoir installé la version développeur pour compiler vos programmes. **Si vous avez installé le paquet libsdl2-dev et que vous programmez avec SDL2, utilisez sdl2-config au lieu de sdl-config.**</​note>​
 +**dans votre code vous devez avoir inclus SDL.h.**
  
 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 : 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 :
Ligne 41: Ligne 94:
   gcc -o executable main.o fichier1.o `sdl-config --libs`   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 :
- +
-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   ./​executable
  
-===== Bibliothèques complémentaires ​=====+===== 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
  
-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]]**. +Par exemple ​: 
- +  gcc -o prog fichier1.c fichier2.c `sdl-config ​--cflags ​--libs` -lSDL_mixer 
-Les options respectives à ajouter à la compilation avec GCC (après **-lSDLmain -lSDL**) sont : +  gcc -o prog fichier1.c fichier2.c `sdl2-config ​--cflags ​--libs` -lSDL2_ttf
-<​code>​ +
--lSDL_image # pour SDL_image +
--lSDL_ttf # pour SDL_ttf +
--lSDL_mixer # pour SDL_mixer +
-</​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 :
-  * [[http://fr.openclassrooms.com/|OpenClassrooms]] +  * [[https://zestedesavoir.com/​tutoriels/​1014/​utiliser-la-sdl-en-langage-c/|Zest de savoir]] (dernière mise à jour 27/12/2018) 
-  * [[http://c.developpez.com/​|Développez.com]] +  * [[https://loka.developpez.com/​tutoriel/​sdl/​|Développez.com]]  
-  * [[http://www.gnurou.org/writing/linuxmag/sdl|gnurou.org]] +  * [[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]].//​+//​Contributeurs : [[:​utilisateurs:​lost-in-the-shell]],​ [[:​utilisateurs:​sully]], [[:​utilisateurs:​amiralgaby]].//
  • sdl.1596004374.txt.gz
  • Dernière modification: Le 29/07/2020, 08:32
  • par 79.91.215.183