Posterior

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

Primer ejemplo


Actualizado el: 25-05-2006 11:10

Posterior