Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
sdl [Le 14/07/2020, 12:32] amiralgaby suppression de mon ajout qui faisait doublons |
sdl [Le 31/01/2021, 21:56] Amiralgaby [Bibliothèques complémentaires] plus de lisibilité et de cohérence |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag>Xenial programmation BROUILLON}} | + | {{tag>Xenial 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/|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 ===== | ===== 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 43: | Ligne 46: | ||
**Si vous avez installé le paquet libsdl2-dev et que vous programmez avec SDL2, utilisez sdl2-config au lieu de sdl-config.** | **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 : | + | Simplement, sans modifier la variable [[:variables_d_environnement#variables_liees_aux_emplacements_de_fichiers|PATH]], avec : |
- | + | ||
- | PATH=.:$PATH | + | |
- | executable | + | |
- | + | ||
- | Ou, plus simplement, sans modifier la variable PATH, avec : | + | |
./executable | ./executable | ||
Ligne 54: | Ligne 52: | ||
===== Bibliothèques complémentaires ===== | ===== Bibliothèques complémentaires ===== | ||
- | 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 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 | ||
- | Les options respectives à ajouter à la compilation avec GCC (après **-lSDLmain -lSDL**) sont : | + | Par exemple : |
- | <code> | + | gcc -o prog fichier1.c fichier2.c `sdl-config --cflags --libs` -lSDL_mixer |
- | -lSDL_image # pour SDL_image | + | gcc -o prog fichier1.c fichier2.c `sdl2-config --cflags --libs` -lSDL2_ttf |
- | -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]] | Voir aussi, si pour préférez [[:python]], la librairie [[wpfr>pygame]] | ||
Ligne 74: | Ligne 119: | ||
---- | ---- | ||
- | //Contributeurs : [[:utilisateurs:lost-in-the-shell]], [[:utilisateurs:sully]].// | + | //Contributeurs : [[:utilisateurs:lost-in-the-shell]], [[:utilisateurs:sully]], [[:utilisateurs:amiralgaby]].// |