Simple DirectMedia Layer

De Wikipedia, la enciclopedia libre

(Redirigido desde LibSDL)
Para otros usos de este término, véase SDL.
Capas de abstracción de SDL en distintas plataformas.

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

[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

Herramientas personales
Crear un libro