Introduccion a SDL
Enviado por Carlos Contreras • 19 de Noviembre de 2019 • Tarea • 1.967 Palabras (8 Páginas) • 96 Visitas
Practica 6
Entorno grafico en leguaje C: SDL
Simple DirectMedia Layer (SDL)
Es un conjunto de bibliotecas desarrolladas en el lenguaje de programación C que proporcionan funciones básicas para realizar operaciones de dibujo en dos dimensiones, gestión de efectos de sonido y música, además de carga y gestión de imágenes.
La biblioteca se distribuye bajo la licencia LGPL, que es la que ha provocado el gran avance y evolución de SDL.
SDL y los subsistemas
Un subsistema engloba a una parte específica del hardware con un propósito específico. En SDL es una parte de la librería que nos ofrece soporte a diferentes partes del hardware.
Los subsistemas soportados por SDL son:
Subsistema de Video: Engloba todo lo referente al hardware de video y lo referente a los gráficos. Subsistema de Audio: Es el encargado de la reproducción de sonidos y de la gestión del hardware destinado al audio.
Subsistema de Gestión de Eventos: Es la base de la interactividad con el usuario y con ciertos aspectos del sistema. Con este subsistema sabemos, por ejemplo, que desea hacer el usuario. Joysticks: Al no existir un estándar este subsistema nos permite un mayor control sobre los dispositivos de juegos.
CD-ROM: Nos permite controlar la reproducción de CD-Audio.
Timers: Nos permite sincronizar nuestro videojuego para que tenga la misma respuesta en diferentes tipos de sistemas.
Otros: Ademas de todos estos subsistemas existen diferentes extensiones que nos facilitarán el trabajo con SDL como SDL_image, SDL_ttf... Además de añadir funcionalidad, como SDL_net para el manejo de redes o SDL_mixer que nos proporciona que el subsistema de audio sea realmente manejable.
En este curso nos interesa el domino de los subsistemas de video y otros opcionales como el subsistema SDL_image que si bien no son obligatorios, facilitan la programación y mejoran considerablemente el diseño gráfico de nuestro programa.
Programando en SDL:
La mejor forma de empezar a comprender la potencia de este sistema es programando, veamos un ejemplo inicial y cada sección de código que debería ir como mínimo para levantar un programa con entorno gráfico, describamos parte a parte. (asumiendo que el sistema Linux ya tiene SDL instalado)
[pic 1][pic 2][pic 3][pic 4][pic 5][pic 6][pic 7][pic 8][pic 9][pic 10][pic 11][pic 12][pic 13][pic 14]
Primeros pasos: Descripción de instrucciones de SDL
A continuación se describen algunas instrucciones básicas para inicializar el servicio de SDL, así como su configuración inicial.
SDL_Init(Uint 32 flags)
Inicializa la librería SDL y sus subsistemas, esta tiene que ser la primera función ejecutada antes de llamar a otras instrucciones de SDL.
SDL_SetVideoMode( ancho,largo, colores, SDL_HWSURFACE )
Configura los parámetros del modo video como el ancho y largo de la ventana, el parámetro SDL_HWSURFACE indica que queremos que la ventana se cree en la memoria de video
SDL_WM_SetCaption(const char *title, const char *icon);
Configura el texto de la barra de título y el nombre del icono a usar.
SDL_Event event;
Cerrar la ventana, un clic de mouse o una tecla presionada, en SDL todos son eventos y el control de estos se hace mediante esta variable.
SDL_WaitEvent (&event)
Espera indefinidamente a que suceda un evento, recordemos que un evento puede ser un click o una tecla presionada.
SDL_Quit()
Termina todos los procesos de SDL y sus sub sistemas.
Ahora pongamos en práctica todo el código antes descrito:
Ejemplo 1
Mi primer programa con entorno gráfico (encontraremos este ejemplo en la carpeta de la práctica, se llama 1.c):
#include
#include
#include
SDL_Event event; /*variable de tipo SDL_event para capturer eventos*/
int main(){
/* Tratamos de inicializar la biblioteca SDL */
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
printf("No se pudo inicializar SDL: %s\n", SDL_GetError());
exit(1);
}
[pic 15][pic 16][pic 17][pic 18][pic 19][pic 20][pic 21][pic 22][pic 23][pic 24][pic 25][pic 26][pic 27][pic 28][pic 29][pic 30][pic 31][pic 32][pic 33][pic 34][pic 35][pic 36][pic 37][pic 38][pic 39][pic 40][pic 41][pic 42]
/* configurar modo gráfico y cambiar el t ítulo de la ventana */
if( SDL_SetVideoMode( 640, 480, 16, SDL_HWSURFACE ) == NULL ) {
printf( "Error al entrar a modo grafico: %s\n", SDL_GetError() ); SDL_Quit();
return -1;
}
/*mensaje en la barra*/
SDL_WM_SetCaption( "Hola mundo!", "Hola Mundo!" );
/*dando funcionalidad al boton de cerrar esperamos hasta que ocurra un evento*/
while (SDL_WaitEvent (&event)){
switch (event.type)
{
case SDL_QUIT: SDL_Quit();
break;
default:
break;
}
}
return 0;
}
Para ejecutar se usa la siguiente instrucción:
...