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 | ||
sdl [Le 19/01/2021, 10:22] amiralgaby utilisation du double espace plutot que la balise code |
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 }} | + | {{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. |
- | 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 (série de jeux vidéo)|Civilization II]] sous Linux et le jeu [[wpfr>Doom]] sous BeOS. |
- | Cette page traite des 2 versions de la SDL. | + | Cette page traite des deux 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]]). | + | 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 | + | 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]]**. | + | <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> |
+ | ===== 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> | ||
+ | |||
+ | ==== 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]]** | ||
+ | |||
+ | ==== 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 | 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) | ||
- | ===== Installation complète ===== | + | ==== 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: | ||
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 | 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. | |
- | + | ||
- | ===== 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 ===== | ===== Bibliothèques complémentaires ===== | ||
Ligne 54: | Ligne 46: | ||
Vous pouvez trouver une liste complète des librairies annexes avec cette commande : | Vous pouvez trouver une liste complète des librairies annexes avec cette commande : | ||
- | <code>sudo apt search libsdl</code> | + | sudo apt search libsdl |
---- | ---- | ||
Ligne 60: | Ligne 52: | ||
Le tableau ci-dessous contient des liens pour télécharger les paquets des librairies annexes de la SDL1 : | 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** | | + | ^ 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]]** | | + | |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]]** | | |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]]** | | |image| gestion d'image | **[[apt>libsdl-image1.2|libsdl-image1.2]]**| **[[apt>libsdl-image1.2-dev|libsdl-image1.2-dev]]** | | ||
Ligne 72: | Ligne 64: | ||
Celui-ci pour les bibliothèques annexes de SDL2 | Celui-ci pour les bibliothèques annexes de SDL2 | ||
- | Toutes bibliothèques SDL2 sont classifiées ainsi : __libsdl2-**type**-2.0-0__ pour les versions stable et __libsdl2-**type**-dev__ pour celles en développement. Grâce à cette indexage vous pouvez les installer facilement depuis un terminal. | + | 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** | | + | ^ 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]]** | | + | |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]]** | | |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]]** | | |image| gestion d'image | **[[apt>libsdl2-image-2.0-0|libsdl2-image-2.0-0]]**| **[[apt>libsdl2-image-dev|libsdl2-image-dev]]** | | ||
Ligne 82: | Ligne 74: | ||
==== SDL_mixer (Audio) ==== | ==== SDL_mixer (Audio) ==== | ||
- | Cette librairie annexe permet la gestion de l'**audio** [[https://www.libsdl.org/projects/SDL_mixer/ | site officiel]] de cette librairie | + | Cette librairie annexe permet la gestion de l'**audio** [[https://www.libsdl.org/projects/SDL_mixer/ | site officiel]] de cette librairie |
- | + | ==== SDL_ttf (Écriture dans fenêtre graphique)==== | |
- | ==== 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). | Cette librairie est utile pour écrire dans une fenêtre, elle s'appuie sur freetype2 (donc il faut freetype2). | ||
Ligne 99: | Ligne 90: | ||
==== SDL_net (gestion des paquets/trames) ==== | ==== 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]] | 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 ===== | ===== Compiler vos programmes SDL avec des librairies annexes ===== | ||
Ligne 105: | Ligne 113: | ||
Par exemple : | Par exemple : | ||
- | gcc -o prog fichier1.c fichier2.c `sdl-config --cflags --libs` -lSDL_mixer | + | 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 | + | 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]], [[:utilisateurs:amiralgaby]].// | //Contributeurs : [[:utilisateurs:lost-in-the-shell]], [[:utilisateurs:sully]], [[:utilisateurs:amiralgaby]].// |