Lo primero, es ir a la página oficial de SDL: http://www.libsdl.org/
Una vez dentro, el menú lateral, en la sección “Download”, entra en SDL 1.2.
Nos encontraremos varias secciones:
Source Code: este es el código fuente, no nos interesa si lo que queremos es solo usar SDL y no entender cómo funciona.
Runtime Libraries: Estas son las librerías necesarias para ejecutar el programa una vez compilado.
Development Libraries: Este es el paquete que nos interesa.
Veremos que en Development Libraries hay varias versiones, para Linux, para Windows y para Mac, esto nos asegura que nuestros programas son compatibles y multiplataforma. Pero si estas leyendo esto es porque ya conoces las bondades de SDL.
Obviamente el que nos interesa es la versión para Windows (Win32), veremos que hay varias, y entre ellas vemos que hay una versión específica para MinGW (Mingw32). Nos la descargamos.
Dentro del comprimido, hay una carpeta y dentro de esa carpeta hay otras carpetas, nos interesan esas carpetas, exactamente nos interesan “include”, “lib”, “bin” y “share”.
Primero pegamos las carpetas “lib”, “bin” y “share” directamente en C:\MinGW.
En la carpeta “include” hay otra carpeta, “SDL”, y dentro de esta hay muchos archivos, pegamos esos archivos (solo los archivos, no la carpeta que los contiene) en C:\MinGW\include.
Con esto ya tendremos SDL instalado. Para comprobar que funciona, usaremos un programa sencillo.
#include <stdio.h>
#include <SDL_image.h>
#include <stdlib.h>
#include <SDL.h>
int main(int argc, char *argv[]){
SDL_Surface *screen;
SDL_Surface *fondo,*fondo2,*fondo3;
SDL_Rect destino,destino2,destino3;
/* char cadena1[60];*/
int x,y;
float i;
SDL_Event event;
SDL_Init(SDL_INIT_VIDEO);
/* Preparamos las imagenes a mostrar */
fondo = IMG_Load("protag.png");
fondo2 = IMG_Load("protag.png");
screen = SDL_SetVideoMode( 640, 480, 32, SDL_SWSURFACE|SDL_DOUBLEBUF|SDL_ASYNCBLIT);
SDL_WM_SetCaption( "Hola mundo 2!", "Hola Mundo 2!" );
/* Dibujamos la imagen de fondo */
SDL_BlitSurface(fondo2, NULL, screen, &destino2);
SDL_BlitSurface(fondo, NULL, screen, &destino);
destino3.x=200;
destino3.y=200;
for (i=0; i<5000 || SDL_PollEvent(&event);i+=0.05) {
SDL_WaitEvent(&event);
if (event.type==SDL_QUIT)
return(0);
if(SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(1)){
x=event.button.x;
y=event.button.y;
destino.x=200;
destino.y=200;
destino2.x=x-destino2.w/2;
destino2.y=y-destino2.h/2;
SDL_BlitSurface(fondo3, NULL, screen, &destino3);
SDL_BlitSurface(fondo, NULL, screen, &destino);
SDL_BlitSurface(fondo2, NULL, screen, &destino2);
SDL_Flip(screen);
}
}
SDL_Quit();
return 0;
}
Este programa lo guardamos en un archivo con la extensión .c
Este programa además de usar SDL usa ciertas librerías que se suelen usar en SDL pero que no se incluyen en el núcleo, como son SDL_image. Para obtenerlas entramos en la sección de Libraries en el menú lateral de la página oficial de SDL. En esa página nos encontramos una barbaridad de librerías, usamos el buscador para encontrarla.
Nos las bajamos y las descomprimimos las librerías, la organización de las páginas de librerías en mas caótica, y no hay sección de Development Libraries, si no que en http://www.libsdl.org/projects/SDL_image/ el paquete que queremos es este “SDL_image-devel-1.2.10-VC.zip” (la versión puede cambiar).
Para descomprimir e instalar las librerías correctamente hay que usar el sentido común, para ello pondré como hacerlo para SDL_image.
En el paquete de SDL_image veremos las carpetas: “include” y “lib”. Lo primero es pegar la carpeta include y lib en C:\MinGW. La carpeta lib además contiene los dll necesarios para ejecutar el programa una vez compilados, aseguate de que esas dll están junto con el ejecutable al probar el programa.
Antes de compilar tenemos que usar el programa sdl-config que nos dará los parámetros que tenemos que pasarle al compilador para poder compilar con SDL, además, al usar SDL_image tenemos que añadir –lSDL_image.
Para poder usar sdl-config tienes que abrir el panel de msys (C:\msys\1.0\msys.bat) y escribimos “sdl-config --cflags --libs”. Esto nos devolverá algo como esto “-I/usr/local/include/SDL -D_GNU_SOURCE=1 -Dmain=SDL_main -L/usr/local/lib -lmingw32 -lSDLmain -lSDL -mwindows”
Para compilarlo abrimos el cmd de Windows.
Si tienes Windows XP usa “ejecutar” de menú inicio. Y si tienes vista (ojala no) o Windows 7 abre inicio y teclea cmd en la barra de búsqueda y pulsa enter.
Una vez abierto escribe C:\MinGW\bin\gcc.exe -Wall ruta-archivo.c -o ruta-programa-compilado.exe (y lo que te devuelve sdl-config) -lSDL_imge.
En mi caso, para compilar uso esto: “C:\Users\David>C:\MinGW\bin\gcc.exe -Wall G:\Trabajos\C\imagen_sdl-w.c -o G:\Trabajos\C\imagen_sdl-w.exe -I/usr/local/include/SDL -D_GNU_SOURCE=1 -Dmain=SDL_main -L/usr/local/lib -lmingw32 -lSDLmain -lSDL -lSDL_image”