1. Toma de contacto. Entrando a modo gráfico.
Curso: Introducción a los gráficos en C con SDL
1. Toma de contacto. Entrando a modo gráfico.
Existen distintas bibliotecas que permiten crear gráficos desde el lenguaje C. Unas son específicas para un sistema, y otras están diseñadas para ser portables de un sistema a otro. Por otra parte, unas se centran en las funciones básicas de dibujo (líneas, círculos, rectángulos, etc), y otras se orientan más a la representación de imágenes que ya existan como fichero.Nosotros usaremos SDL, que es una de las bibliotecas más adecuadas para crear juegos, porque es multiplataforma (existe para Windows y para Linux, como mínimo) y porque esta orientada a la manipulación de imágenes, que es algo más frecuente en juegos que el dibujar líneas o polígonos.
Para estos ejemplos, usaremos Linux, la distribución llamada Fedora Core, que debería tener la biblioteca instalada (en un apéndice veremos cómo instalarla, si no es el caso) y así pasaremos directamente a la parte práctica.
Para poder utilizar SDL, debemos incluir SDL.h, así
#include <SDL/SDL.h>
Ya dentro del cuerpo del programa, el primer paso sería tratar de inicializar la biblioteca SDL, y abandonar el programa en caso de no conseguirlo:
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
printf("No se pudo inicializar SDL: %s\n", SDL_GetError());
exit(1);
}
Al terminar nuestro programa, deberíamos llamar a SQL_Quit:
SDL_Quit();
¿Y qué hacemos dentro de modo gráfico?.Vamos a empezar por lo más sencillo: escribir "Hola mundo" y esperar un instante antes de salir del programa.
Para escoger modo de pantalla de 640x480 puntos, con 16 bits de color
if( SDL_SetVideoMode( 640, 480, 16, SDL_HWSURFACE ) == NULL ) {
printf( "Error al entrar a modo grafico: %s\n", SDL_GetError() );
SDL_Quit();
return -1;
}
En cuanto a hacer que aparezca algún texto en la pantalla, como primera aproximación podemos cambiar simplemente el texto (caption) de la ventana:
SDL_WM_SetCaption( "Hola mundo!", "Hola Mundo!" );
Y para esperar, tenemos una orden
SDL_Delay( 5000 );
Todo esto, junto en un programa, quedaría:
1: /*******************************************
2: * Introduccion a SDL - 1 *
3: * Curso de C, Nacho Cabanes *
4: *******************************************/
5:
6: #include <stdlib.h>
7: #include <SDL/SDL.h>
8:
9: int main()
10: {
11: /* Tratamos de inicializar la biblioteca SDL */
12: if (SDL_Init(SDL_INIT_VIDEO) < 0) {
13: printf("No se pudo inicializar SDL: %s\n", SDL_GetError());
14: exit(1);
15: }
16:
17: /* Si todo ha ido bien, hacemos algo:
18: entrar a modo grafico y cambiar el título de la ventana */
19: if( SDL_SetVideoMode( 640, 480, 16, SDL_HWSURFACE ) == NULL ) {
20: printf( "Error al entrar a modo grafico: %s\n", SDL_GetError() );
21: SDL_Quit();
22: return -1;
23: }
24:
25: SDL_WM_SetCaption( "Hola mundo!", "Hola Mundo!" );
26:
27: SDL_Delay( 5000 );
28:
29: /* Finalmente, preparamos para salir */
30: SDL_Quit();
31: return 0;
32: }
Para compilarlo deberíamos teclear lo siguiente:cc -o sdl01 sdl01.c `sdl-config --cflags --libs`
Hay cosas que ya conocemos: el compilador (cc), el nombre para el ejecutable (-o sdl01) y el nombre del fuente (sdl01.c). Las opciones adicionales debemos indicarlas tal y como aparecen, entre acentos graves:
`sdl-config --cflags --libs`
El resultado de nuestro programa ya en ejecución sería este

Actualizado el: 25-05-2006 11:10