Simple DirectMedia Layer
De Wikipedia, la enciclopedia libre
Simple DirectMedia Layer (SDL) es un conjunto de bibliotecas desarrolladas con el lenguaje C que proporcionan funciones básicas para realizar operaciones de dibujado 2D, gestión de efectos de sonido y música, y carga y gestión de imágenes.
Pese a estar programado en C, tiene wrappers a otros lenguajes de programación como C++, Ada, C#, Basic, Erlang, Lua, Java, Python, etc. También proporciona herramientas para el desarrollo de videojuegos y aplicaciones multimedia. Una de sus grandes virtudes es el tratarse de una biblioteca multiplataforma, soportando oficialmente los sistemas windows, linux, MacOS y QNX, además de otras arquitecturas/sistemas como Dreamcast, GP32, GP2X... De ahí le vienen las siglas Simple Directmedia Layer que más o menos alude a capa de abstracción multimedia. Desarrolladas inicialmente por Sam Lantinga, desarrollador de videojuegos para la plataforma linux.
La biblioteca se distribuye bajo la licencia LGPL, que es la que ha provocado el gran avance y evolución de las SDL.
Contenido |
[editar] Componentes adicionales
Se han desarrollado una serie de bibliotecas adicionales que complementan las funcionalidades y capacidades de la biblioteca base.
- SDL Mixer: Extiende las capacidades de SDL para la gestión y uso de sonido y música en aplicaciones y juegos. Soporta formatos de sonido como Wave, MP3 y OGG, y formatos de música como MOD, S3M, IT, y XM.
- SDL Image: Extiende notablemente las capacidades para trabajar con diferentes formatos de imagen. Los formatos soportados son los siguientes: BMP, JPEG, TIFF, PNG, PNM, PCX, XPM, LBM, GIF, y TGA,
- SDL Net: Proporciona funciones y tipos de dato multiplataforma para programar aplicaciones que trabajen con redes.
- SDL RTF: Posibilita el abrir para leer en aplicaciones SDL archivos de texto usando el formato Rich Text Format RTF.
- SDL TTF: Permite usar fuentes TrueType en aplicaciones SDL.
[editar] Bindings
- Ada
- BASIC (sdlBasic)
- C#
- D (Derelict)
- Eiffel
- Erlang
- Euphoria
- Guile
- Haskell (HSDL)
- Java
- Lisp
- Lua
- ML
- Objective C
- Pascal
- Perl
- PHP
- Pike
- Pliant
- Python (pygame)
- Ruby
[editar] .NET Binding
SDL.NET es un binding .NET orientado a objeto compatible con CLS para las SDL escrito por David Y. Hudson. Provee un acceso de alto nivel a las funciones de audio, teclado, ratón, joystick, fuentes TrueType, varios formatos de imagen, mezcla de sonido, películas en MPEG-1 y hardware 3D mediante OpenGL y framebuffer 2D de vídeo.
[editar] Ejemplos
Ejemplo de inialización de las SDL en C.
#include <stdlib.h> #include "SDL.h" main(int argc, char *argv[]) { if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 ) { fprintf(stderr, "No se puede iniciar SDL: %s\n", SDL_GetError()); exit(1); } atexit(SDL_Quit); ... }
Ejemplo del uso de SDL en C.
#include <stdlib.h> #include "SDL.h" int done = 0; SDL_Event evento; SDL_Surface *screen; main(int argc, char *argv[]) { if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 ) { fprintf(stderr, "No se puede iniciar SDL: %s\n", SDL_GetError()); exit(1); } atexit(SDL_Quit); screen = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_SWSURFACE); while (done == 0) { while (SDL_PollEvent(&evento)) { if (evento.type == SDL_QUIT) {done = 1;} if (evento.type == SDL_KEYDOWN) { switch (evento.key.keysym.sym) { case SDLK_ESCAPE: done = 1; break; default: break; } } } } }
Ejemplo de uso de SDL en C++:
// Uso de SDL en un entorno Linux, por "Mario G.M." #include <iostream> #include <SDL/SDL.h> main(int argc, char *argv[]){ if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 ) { fprintf(stderr, "No se puede iniciar SDL: %s\n", SDL_GetError()); exit(1); } atexit(SDL_Quit); SDL_Surface* screen = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_SWSURFACE); bool exit = false; while (not exit){ SDL_Event event; while (SDL_PollEvent(&event)){ if (evento.type == SDL_QUIT) exit = true; if (evento.type == SDL_KEYDOWN){ switch (evento.key.keysym.sym){ case SDLK_ESCAPE: done = 1; break; } } } } }
[editar] Lectura de un joystick
Ejemplo de lectura de un joystick empleando SDL.
[editar] Véase también
[editar] Enlaces externos
- www.libSDL.org - Página oficial de las SDL.
- www.libSDL.es - La Comunidad SDL en Español.
- Tutorial libSDL en formato Wiki.
- SDL_Mixer - Página oficial de SDL_Mixer.
- SDL_Image - Página oficial de SDL_Image.
- SDL_Net Página oficial de SDL_Net
- SDL_Rtf Página principal de SDL_RTF
- SDL_Ttf Página oficial de SDL_TTF
- Página oficial de SDL_gfx
- Página oficial de zlib
- Página oficial de libpng
- PyGame - Wrapper para Python de las bibliotecas SDL
- Programacionjuegos.net - Interesante iniciativa en proyectos con las bibliotecas SDL

