[Previo] Tabla de Contenidos [Siguiente]


Programando con SDL

Inicializando la librería

Cualquier programa hecho con esta librería, ademas de incluir las cabeceras típicas (como stdio.h y stdlib.h), debe contar además com el archivo SDL/SDL.h así:

#include "SDL/SDL.h" ó
#include "SDL.h"

Se debe escribir en mayúsculas de modo de mantener la compatibilidad con Linux. En el mismo ambito de la compatibilidad, la segunda opción es preferible por motivos de portabilidad en varias plataformas, aunque esto requerirá que se añada el directorio SDL a la lista de rutas incluidas que buscará el compilador. Todas las demás cabeceras de archivos SDL están incorporadas dentro de ésta para así limitar el mantenimiento. También es necesario enlazar la librería principal de SDL (lib-SDL) dentro la aplicación.

Para inicializar y para cerrar la SDL (en este caso, es más preciso referirse a alguno de sus subsistemas) se debe llamar a la función SDL_InitSubSystem() y SDL_QuitSubSystem(), respectivamente. El prototipo de estas funciones es el siguiente:

int SDL_InitSubSystem(Uint32 flags);
void SDL_QuitSubSystem(Uint32 flags);

La función SDL_InitSubSystem() devuelve –1 si hubo problemas y 0 si tuvo éxito.
El parámetro que toma es para especificar que bloque o subsistema de SDL inicializar.

La función final siempre debe ser SDL_Quit, ya que esto retirará lo manejadores de señales del paracaídas y terminará cualquier hilo que haya quedado activo.

Algunos de los parametros más utilizados son:

SDL_INIT_VIDEO
Inicializa el subsistema de video
SDL_INIT_AUDIO
Inicializa el subsistema de audio
SDL_INIT_CDROM
Inicializa el subsistema de cd-rom
SDL_INIT_TIMER
Inicializa el subsistema timer
SDL_INIT_JOYSTICK
Inicializa el subsistema de joystick
SDL_INIT_EVERYTHING
Inicializa todo lo anterior

Ejemplo:
#include <stdlib.h>
#include "SDL.h"

main(int argc, char *argv[])
{
    if (SDL_InitSubSystem(SDL_INIT_JOYSTICK) < 0)
      {
        fprintf(stderr, "No se encontró ningun joystick en el sistema: %s\n”, SDL_GetError());
        exit(1);
      }
    
    atexit(SDL_Quit);

    ...
	
}

[Previo] Tabla de Contenidos [Siguiente]