SDL | |
Développeur | Sam Lantinga |
---|---|
Dernière version | 1.2.14 [+/-] |
Environnements | Multiplate-forme |
Type | bibliothèque logicielle |
Licence | GNU LGPL 2 |
Site Web | LibSDL.org |
modifier |
Simple DirectMedia Layer (SDL) est une bibliothèque très utilisée dans le monde de la création d'applications multimédias en deux dimensions comme les jeux vidéo, les démos graphiques, les émulateurs, etc ... Sa simplicité, sa flexibilité, sa portabilité et surtout sa licence GNU LGPL contribuent à son grand succès. Elle est de plus considérée comme un outil suffisamment simple, et est souvent conseillée aux programmeurs débutants pour commencer dans le monde de la programmation multimédia.
Sam Lantinga crée la bibliothèque en 1998. L'idée lui est venue pendant qu'il faisait un port d'application de Windows à Macintosh. Peu après, il utilise SDL pour porter Doom sur BeOS. Sam travaille ensuite pour Loki Software et d'autres bibliothèques libres se joignent à SDL, tel SMPEG et OpenAL.
Cette bibliothèque se retrouve sous de nombreux systèmes d'exploitation, comme Linux, Windows, Windows CE, BeOS, Mac OS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, Irix, et QNX. Elle fonctionne aussi sous quelques systèmes embarqués, par exemple des consoles de jeu portable. Elle est sous licence GNU LGPL version 2.
Écrite en C, elle peut cependant être utilisée par de nombreux langages de programmation, comme l'Ada, C\C++, C#, Ch, D, Eiffel, Erlang, Euphoria, Guile, Haskell, OCaml, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python (grâce à Pygame), Ruby et Smalltalk.
En outre, la SDL gère :
Voici un exemple d'utilisation de la SDL en C qui va afficher l'image exemple.bmp
sur une fenêtre de 600*800 pixels:
#include#include #include //Ne pas oublier d'inclure la SDL main(int argc, char *argv[]) { SDL_Surface *ecran=NULL, *image=SDL_LoadBMP("exemple.bmp");//Création de la surface écran et celle image int c=1; SDL_Event event;//Création d'un évènement SDL_Rect positionImage; positionImage.x=200;//Position verticale de l'image: 200 pixels positionImage.y=200;//Position horizontale de l'image: 200 pixels SDL_Init(SDL_INIT_VIDEO);//On Initialise la SDL ecran=SDL_SetVideoMode(600, 800, 32, SDL_HWSURFACE);//On ouvre une fenêtre de 600*800 pixels, 32 bits par pixel. Le flag à la fin permet de créer la surface en mémoire vidéo. while(c)//Début de la boucle infinie { SDL_WaitEvent(&event);//attente d'un évenement if(event.type==SDL_QUIT)//Si on clique sur la croix c=0;//On quitte la boucle infinie SDL_BlitSurface(image,NULL,ecran,&positionImage);//On colle l'image à l'écran SDL_Flip(ecran);//On actualise l'écran } SDL_FreeSurface(image);//On libère la mémoire SDL_Quit();//On quitte la SDL return EXIT_SUCCESS; }
.
Sous linux, vous pouvez compiler avec cette ligne:
gcc `sdl-config --cflags` `sdl-config --libs` -osdltest sdltest.c
(en supposant que votre fichier s'appelle sdltest.c ; voir http://www.libsdl.org/cgi/docwiki.cgi/FAQ_Compiling_on_Linux)
Il existe des modules pour la SDL (pour les plus connus) :