FAQ SDL
FAQ SDLConsultez toutes les FAQ
Nombre d'auteurs : 6, nombre de questions : 67, création le 10 mai 2013
- Comment participer à cette FAQ ?
- Qu'est-ce que SDL ?
- Quels sont les intérêts d'utiliser SDL ?
- Quelles sont les limites de SDL ?
- Où trouver des tutoriels pour SDL ?
- Où trouver de la documentation de référence sur SDL ?
- Où trouver des bibliothèques complémentaires pour SDL ?
- Comment se passer de la console sous Windows ?
- Où se trouvent les sorties standard et d'erreur sous Windows ?
- Pourquoi certaines fonctions provoquent-elles des erreurs ?
Nous comptons sur vous pour enrichir cette FAQ et participer à sa maintenance ! Si vous avez remarqué une erreur, une simple faute d'orthographe, si vous souhaitez nous faire part d'un manque, ou n'importe quoi d'autre : vous pouvez , ou poster à la suite de ce sujet consacré à la FAQ SDL.
Merci !
SDL (pour Simple Directmedia Layer) est une bibliothèque multimédia simple, mais bas niveau développée en C.
Elle permet de gérer facilement :
- le fenêtrage ;
- la vidéo 2D ;
- l'audio ;
- les évènements hardware (clavier, souris, joystick) ;
- le CD-ROM ;
- les threads ;
- le réseau ;
- l'accélération 3D matérielle via OpenGL avec qui elle peut s'interfacer.
Elle est totalement libre (sous licence LGPL) et peut être utilisée dans n'importe quelle application, libre ou commerciale.
Lien : Site officiel
Les principaux avantages de SDL sont qu'elle est 100 % libre, et surtout multiplateforme (portage sur de nombreux environnements comme Windows, Linux, MacOS, BeOS, OpenBSD, etc.).
Elle fonctionne nativement en C et C++, mais comprend beaucoup de bindings qui incluent les langages Java, C#, ADA, Pascal, Python et d'autres.
Voir la page des bindings sur le site officiel.
Par exemple, de nombreux jeux Linux, amateurs ou commerciaux, utilisent SDL comme base pour gérer le fenêtrage et les évènements.
SDL ne permet pas de faire des transformations sur les surfaces que l'on a affichées (voir https://jeux.developpez.com/faq/sdl/?page=2d#2D_transformations). Aussi pour ce genre de choses vous devrez soit tout coder vous-même, soit trouver des bibliothèques par-dessus SDL qui le feront pour vous. Cependant, tous les calculs étant effectués par le programme, ce genre de transformation peut être assez lourd. Si vous devez faire beaucoup de transformations dans vos applications, le mieux est de gérer le rendu avec une API comme OpenGL qui gère les transformations hardware.
Elle ne permet aussi de charger que des formats de base (comme le BMP pour les images ou le WAV pour le son), mais la plupart des formats courants sont déjà gérés dans les bibliothèques tierces (voir https://jeux.developpez.com/faq/sdl/?page=generalites#GENERALITES_bibliotheques).
Elle ne gère pas non plus l'affichage 3D, mais elle peut facilement s'interfacer avec OpenGL, ce qui permet d'avoir un programme portable depuis la création de la fenêtre jusqu'à l'affichage 3D, en passant par la gestion des évènements et du son.
Il existe de nombreux tutoriels en français sur la SDL :
- SDL de A à Z
- Programmation de jeux 2D en SDL : un morpion
- Programmation de jeux 2D en SDL/OpenGL : un pong
- Programmation graphique en C avec la SDL
- Utilisation de SDL_RWops : gestion de ressources
- Tutoriels SDL du GCN
- Programmation ludique avec SDL (paru dans Linux Mag)
- … et encore bien d'autres si vous consultez Google.
À noter également ces très bons tutoriels en anglais : Lazy Foo.
Et bien sûr, l'incontournable site officiel, sur lequel vous trouverez (en anglais) des tutoriels, des articles et toute sorte d'informations complémentaires.
Vous pourrez trouver sur le wiki du site officiel une documentation de référence décrivant en détail chaque fonction :
SDL Documentation Wiki.
SDL étant une API simple, mais de bas niveau donc ne gérant pas certaines choses comme la gestion des collisions ou les polices, beaucoup de bibliothèques sont arrivées permettant de gérer par exemple l'ouverture de formats d'images variés (SDL_image), la gestion avancée du son (SDL_mixer), la gestion des polices TrueType (SDL_ttf), etc.
Ces bibliothèques sont toutes accessibles depuis la page bibliothèques du site officiel (moteur de recherche inclus).
Il suffit pour cela de créer un projet « Application Windows » au lieu de « Projet Console » (ou équivalent, selon votre environnement de programmation). Inutile par contre de remplacer main par WinMain, comme il faut habituellement le faire : SDL s'en charge pour vous et appellera bien votre main.
Sous Windows, la bibliothèque SDL redirige respectivement la sortie standard et la sortie d'erreur vers les fichiers stdout.txt et stderr.txt respectivement. À la fin de l'exécution, la bibliothèque vérifie si les fichiers sont vides et, si c'est le cas, la SDL les efface.
Si un appel SDL est fait avant l'appel à SDL_Init, le comportement est indéfini. Il faut faire attention aux appels SDL qui se trouvent dans les constructeurs puisque, souvent, l'initialisation de la SDL se fait dans la fonction main et si un objet est déclaré en global, le constructeur sera appelé avant la première instruction du main.
Pour éviter ce genre de problème, ne mettez pas d'appels SDL dans les constructeurs.