Éste es el comienzo de una pequeña serie de tutoriales de uso de la biblioteca gráfica SDL. Y os preguntareis, ¿qué tiene de especial?. Pues entre otras cosas:
- Fácil acceso a dispositivos: tarjetas de video, audio, ratones, joysticks, cd-rom, etc...
- Múltiplataforma.
- Y es LGPL.
Antes de comenzar a programar, primero nos hemos de descargar la versión 1.2 de SDL que la podemos encontrar en:
http://www.libsdl.org
Allí encontrareis todo tipo de documentación tanto de configuración como de primeros pasos dentro de este mundo.
Bueno.... empecemos.
Configuración:
Si soys usuarios de Windows y poseis VC6.0 o VC.NET estaís de suerte porque hay un estupendo tutorial de como ponerlo en marcha en:
Purdue Game Development Club
Para todos los demás, lo siento pero de momento no os puedo ayudar, aunque en la web oficial de SDL podreís encontrar este tipo de información.
Una vez descargados los ficheros que se nos indica y tengamos configurado la SDL para Visual Studio, podemos comenzar con las primeras pruebas.
main.c
/* -- Incluye librerias precompiladas -- */
#ifdef WIN32
#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "SDLmain.lib")
#endif
#include "SDL.h"
#include "stdlib.h"
int main(int argc, char **argv)
{
SDL_Surface *screen;
int done=0;
SDL_Event event;
if(SDL_Init(SDL_INIT_VIDEO)<0){
printf("No se puede inicializar la SDL: %s\n", SDL_GetError());
exit(1);
}
atexit(SDL_Quit);
//Activamos el modo de video
screen = SDL_SetVideoMode(640,480,24, SDL_HWSURFACE);
if (!screen){
printf("No se puede inicializar el modo gráfico: %s\n", SDL_GetError());
exit(1);
}
//No hagas nada hasta que apreten una tecla.
while(done==0){
while (SDL_PollEvent(&event)){
if(event.type == SDL_KEYDOWN) done = 1;
}
}
return 0;
}
Vamos a comentar un poco el código.
SDL_Init: acepta argumentos de tipo Uint32. Con el parámetro SDL_INIT_VIDEO lo único que hace es cargar el subsistema de video, como podreís imaginar hay la posibilidad de añadir más subsistemas: SDL_INIT_AUDIO, SDL_INIT_CDROM, etc.... De este tema hablaremos más adelante.
SDL_GetError: devuelve el error si no se ha podido cargar el subsistema por alguna razón.
SetVideoMode: tiene como parametros la anchura, altura, profundidad de color y por último flags (veremos más adelante). Esto generará una ventana de 640x480. El bucle while es necesario para mantener el programa en ejecución, sino os daría la sensación de que no pasa nada ya que el codigo se ejecutaria y el programa finalizaría directamente.
SDL_PollEvent: es un lector de eventos. En los sistemas gestores de ventanas, las acciones que realizamos en ellos se conocen como eventos. Existe el evento click, dobleclick, onfocus, etc.... Así pues como ya habreis podido intuir, no se podrá salir del programa a menos que apretemos una tecla (SDL_KEYDOWN). Más adelante veremos que podemos elegir la tecla para salir(ESC).
atexit(): lo único que hace al salir llamar a la función.
SDL_Quit(): que se encargará de cerrar correctamente la SDL.
Hasta el próximo tutorial...