PDF de programación - Capítulo 1 - Los primeros pasos con la librería SDL - Programando con la libreria SDL

Imágen de pdf Capítulo 1 - Los primeros pasos con la librería SDL - Programando con la libreria SDL

Capítulo 1 - Los primeros pasos con la librería SDL - Programando con la libreria SDLgráfica de visualizaciones

Publicado el 25 de Enero del 2019
2.598 visualizaciones desde el 25 de Enero del 2019
279,8 KB
20 paginas
Creado hace 21a (05/08/2002)
Programando con la librería SDL RCAF © 2002


Capítulo 1
LOS PRIMEROS PASOS CON LA LIBRERÍA SDL



Introducción


Básicamente el curso está orientado a aprender a utilizar la librería SDL, para crear
alguna demo o videojuego. Existen muchas librerías “allá afuera”, muchas de ellas son
comerciales y otras son gratuitas. De estas últimas existen bastantes, entre ellas tenemos a
la conocida librería Allegro, la cual es bastante buena para comenzar en esto de la
programación gráfica. También existen bastantes wrapper para DirectX. A mi parecer SDL es
más profesional que Allegro, pero esto no quiere decir que con Allegro no se puedan hacer
juegos buenos, ya que se han hecho bastantes, de muy buena calidad.


SDL significa Simple DirectMedia Layer, y fue creada por Sam Lantinga, Jefe de
Programación de Loki Entertaiment Software, para portar juegos a Linux. Uno de los juegos
portados es el Unreal Tournament, entre otros.


La SDL es una API multiplataforma, es decir, todas las aplicaciones que hagamos con
esta librería pueden ser compiladas, muchas veces sin cambiar ninguna línea de código, en
varias plataformas como: Linux, Windows, Macintosh, Beos, etc.


Requerimientos

Los requerimientos mínimos para seguir el curso son los siguientes:


- Saber programar en lenguaje C y C++. Por qué en C++ se preguntarán algunos,
porque cuando sea posible encapsularemos algunas cosas en clases, aunque si solo
saben C, igual pueden seguir el curso al principio, pero es recomendable que
aprendan C++.

- Tener nociones básicas del uso de la STL (Standard Template Library), ya que nos
servirá para utilizar listas enlazadas y arreglos de cualquier tamaño, entre otras cosas.
Si no saben ocuparla, traten de buscar en la red algún tutorial sobre esto.

- Tener el compilador Mingw para windows o en su defecto el entorno de desarrollo
integrado Dev-C++ que ya incluye este compilador, este último será el que usaremos.
- Ojalá tener algunos conocimientos básicos de programación gráfica. Si alguna vez
programaron en el conocido modo 13h (320x200 a 256 colores) se les hará mucho
más fácil. Y aún mejor si han utilizado la librería allegro u otra librería gráfica.


1

Programando con la librería SDL RCAF © 2002


- Y por último, lo más importante, las librerías SDL, es decir los típicos archivos de

cabecera (*.h,) y las librerías (*.lib).

Todas las herramientas necesarias para comenzar pueden ser descargadas de mi sitio web.


¿Por qué usar la SDL?



Muchos pueden pensar por qué usar la SDL para programar en Windows, si existen
las librerías DirectX. Bueno la respuesta a esto es muy sencilla, primero SDL es más intuitiva
y más fácil de usar que DirectX, segundo SDL es portable y DirectX no. Otros dirán está bien,
pero con SDL no puedo hacer juegos 3D. Esto en cierta forma es verdad, pero no es tan así.
Existe otra librería muy conocida, llamada OpenGL, la que está orientada a crear
aplicaciones y videojuegos en 3 dimensiones. La ventaja de SDL es que puede usarse
conjuntamente con OpenGL, pero eso ya es otro curso.


Preparando el compilador y la librería SDL


Lo primero que debemos hacer es instalar Dev-C++. No utilizaremos la IDE, ya que
haremos todo mediante línea de comandos, aunque si quieren, pueden usarla. Una vez este
instalado el Dev-C++, instalaremos las librerías SDL.

Una vez que hayan descomprimido el archivo de la librería SDL, deben copiar los
directorios include y lib a los correspondientes en la carpeta del Dev-C++, por ejemplo en
“c:\Dev-C++”. Una vez hecho esto, deben copiar el archivo
“sdl.dll” a
“c:\windows\system” (si tienen win95 o win98) o a “c:\windows\system32” (si tienen windows
NT, 2000, XP), todo esto suponiendo que el windows esta instalado en “c:\windows”.


llamado

Si alguien tiene problemas con la instalación del compilador o las librerías, no dude en

preguntar en la lista de discusión.

Una vez que tengamos todo esto instalado, estamos listo para comenzar a programar.



2

Programando con la librería SDL RCAF © 2002

Inicializando la librería

Todos los programas que hagamos comenzarán incluyendo el archivo SDL/SDL.h así:

#include <SDL/SDL.h>


Lo colocamos en mayúsculas, simplemente para que sea compatible con Linux, ya

Para inicializar la SDL debemos llamar a la función SDL_Init(), el prototipo de esta

que este último es “case sensitive”.


función es el siguiente:

int SDL_Init(Uint32 flags);

Esta función retorna -1 si algo falla y cero si tuvo éxito.


El parámetro que toma es para especificar que partes de SDL inicializar. Los más

utilizados son los siguientes:

SDL_INIT_TIMER
SDL_INIT_AUDIO
SDL_INIT_VIDEO
SDL_INIT_CDROM
SDL_INIT_JOYSTICK
SDL_INIT_EVERYTHING Inicializa todo lo anterior

Inicializa el subsistema timer
Inicializa el subsistema de audio
Inicializa el subsistema de video
Inicializa el subsistema de cd-rom
Inicializa el subsistema de joystick



Estos flags no necesariamente se pasan de a uno a la función, pueden ser pasados
muchos de una vez, separándolos con el operador or. Por ejemplo para inicializar el
subsistema de video y audio haríamos lo siguiente:

if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) < 0)
{
fprintf(stderr, "Error al inicializar SDL: %s\n", SDL_GetError());
exit(1);
}


Además deberíamos incluir el archivo “stdlib.h”, pues allí se encuentra el prototipo de

la función exit();


Aquí apareció otra función la SDL_GetError(), lo que hace esta función es retornar un
puntero a char, es decir un “string” que indica el tipo de error ocurrido. Una cosa importante,
es que la función printf no imprime el mensaje en la pantalla, sino que lo escribe en un
archivo llamado stdout.txt. En este caso utilizamos la función fprintf para que escriba en el
archivo stderr.txt, el cual es usado para almacenar los errores ocurridos.


3

Programando con la librería SDL RCAF © 2002

El prototipo de esta función es el siguiente:

char *SDL_GetError(void);


Otra función que siempre usaremos es la SDL_Quit(). Lo que hace esta función es
cerrar todos los subsistemas creados inicialmente con SDL_Init() y libera los recursos
ocupados por ellos. Su prototipo es:

void SDL_Quit(void);


Para no llamar explícitamente a la función SDL_Quit() antes de salir del programa,

puede ser conveniente hacer lo siguiente, después de la función SDL_Init():

atexit(SDL_Quit);

Con esto al salir del programa automáticamente será llamada la función SDL_Quit().


Inicializando subsistemas


cerrar

este

la

en

usamos

subsistema

particular. Para

Anteriormente vimos como inicializar subsistemas usando la función SDL_Init(), pero
existe otra forma, y esta es utilizar la función SDL_InitSubSystem() para inicializar un
sistema
función
SDL_QuitSubSystem().

Los prototipos de estas funciones son:

int SDL_InitSubSystem(Uint32 flags);
void SDL_QuitSubSystem(Uint32 flags);

La función SDL_InitSubSystem() devuelve –1 si hubo problemas y 0 si tuvo éxito.

Por ejemplo, para inicializar el subsistema de Joystick haríamos lo siguiente:

if(SDL_InitSubSystem(SDL_INIT_JOYSTICK) < 0)
{
fprintf(stderr, “No se encontró un joystick en el sistema: %s\n”, SDL_GetError());
exit(1);
}

Y para cerrar este subsistema:

SDL_QuitSubSystem(SDL_INIT_JOYSTICK);



4

Programando con la librería SDL RCAF © 2002


Pero existe otra cosa que puede suceder. Supongamos que queremos inicializar el
sonido, pero si existe un error al inicializarlo debemos seguir en el programa, simplemente
sin sonido. Una solución a esto es utilizar la función SDL_WasInit(), su prototipo es:

Uint32 SDL_WasInit(Uint32 flags);

Esta función nos permite saber que subsistemas han sido inicializados.

Por ejemplo para saber si el sonido fue inicializado, hacemos los siguiente:

Uint32 flags
bool sound;

flags=SDL_WasInit(SDL_INIT_EVERYTHING);
if(flags & SDL_INIT_SOUND) sound=true;
else sound=false;


Lo primero que hacemos es llamar a la función para que nos retorne una mascara de
bits de todos los subsistemas inicializados. Luego vemos si está activado el bit del sonido, si
es así hacemos true una variable booleana llamada sound, de lo contrario será false. De esta
manera si en alguna sección de nuestro código queremos reproducir sonido, verificamos
primero si sound es true.


Inicializar un modo de video


Antes de inicializar un modo de video en concreto veremos que son las superficies, un

concepto importantísimo en la SDL.


Una superficie básicamente es una área de memoria, ya sea memoria del sistema
(RAM) o memoria de video (de la tarjeta de video). En esta área de memoria podemos
almacenar imágenes, dibujar sobre ella, etc.


En el caso de la SDL una superficie es una simple estructura, llamada SDL_Surface,



definida de la siguiente forma:

typedef struct SDL_Surface {
Uint32 flags;
SDL_PixelFormat *format;
int w, h;
Uint16 pitch;
void *pixels;
SDL_Rect clip_rect;
int refcount;
} SDL_Surface;


5

Programando c
  • Links de descarga
http://lwp-l.com/pdf14983

Comentarios de: Capítulo 1 - Los primeros pasos con la librería SDL - Programando con la libreria SDL (1)

Cosme Jose
7 de Abril del 2024
estrellaestrellaestrellaestrellaestrella
No ha dejado ningún comentario
Responder

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad