Comenzaremos con un ejemplo mínimo de SDL dónde abriremos una ventana con el título “Hola Mundo”. Para ello además del código en C prepararemos el Makefile para compilarlo. Podríamos haber usado un entorno de desarrollo integrado como Anjuta por ejemplo, pero ya que se trata de una iniciación a SDL lo mejor creo que es trabajar directamente sobre el compilador y los Makefile.
Makefile
Comenzaremos con el Makefile. Incluiremos además de “sdl-config” las librerías que hemos instalado en el paso anterior:
SDL_CONFIG = sdl-config
DEFAULT_CFLAGS = $(shell $(SDL_CONFIG) --cflags)
MORE_CFLAGS = -O2
CFLAGS = $(DEFAULT_CFLAGS) $(MORE_CFLAGS)
CXXFLAGS = $(DEFAULT_CFLAGS) $(MORE_CFLAGS) -fno-exceptions -fno-rtti
LDLIBS = -lSDL_image -lSDL_mixer -lSDL_ttf -lSDL_net
$(shell $(SDL_CONFIG) --libs)
all: holamundo_sdl
holamundo_sdl: holamundo_sdl.c
clean:
rm -f *~
rm -f main.o main
holamundo_sdl.c
Pasemos ahora a implementar nuestro primer programa con SDL. Será lo más sencillo posible y básicamente realizará las dos siguientes acciones:
- Abrirá una ventana con el título “Hola Mundo SDL”.
- Se cerrará cuando pulsemos “Tecla hacia arriba”.
#include <stdio.h>
#include <stdlib.h>
#include <SDL.h> int main(int argc, char *argv[])
{
SDL_Surface *image, *screen;
SDL_Rect dest;
SDL_Event event; int terminar=0; atexit(SDL_Quit); if (SDL_Init(SDL_INIT_VIDEO) < 0)
{
printf("No se pudo iniciar SDL: %s\n",SDL_GetError());
exit(1);
} screen = SDL_SetVideoMode(640,480,24,SDL_HWSURFACE);
if (screen == NULL)
{
printf("No se puede inicializar el modo gráfico: %s\n",
SDL_GetError());
exit(1);
} SDL_WM_SetCaption("Hola Mundo SDL","Hola Mundo SDL"); SDL_Flip(screen);
while(terminar == 0)
{
while ( SDL_PollEvent(&event) )
{
if ( event.type == SDL_KEYUP )
terminar = 1;
}
} return 0;
} read more