Upload
ukranio-coronilla
View
217
Download
0
Embed Size (px)
DESCRIPTION
Practica de SDL
Citation preview
DESARROLLO DE SISTEMAS DISTRIBUIDOS
Introduccin a la programacin de videojuegos con SDL 2.0
Parte 1
Elaborado por: Ukranio Coronilla
La lgica de ejecucin en un videojuego se basa en un ciclo infinito que realiza ciertas tareas
fundamentales, en el orden que se muestra a continuacin:
termina = 0;
while(!termina){
Lee mouse o teclado para ver si se va a realizar una accin;
Procesar la accin como moverse o disparar;
Realizar lgica del juego que no queda bajo control del jugador como movimiento de agentes, clculo de trayectoria de
disparos, clculo de colisiones, transferencia de datos en red;
Tareas de actualizar scroll de fondo o activar sonidos, sincronizacin;
Mostrar el nuevo frame;
}
A continuacin se muestra el programa sdl1.cpp que muestra como abrir una ventana, crear un
contexto de renderizado, y dibujar una imagen que tengamos guardada en un archivo hacia la
pantalla.
El renderizado (rendering en ingls) es el proceso de generar una imagen o vdeo mediante el
clculo de iluminacin GI partiendo de un modelo en 3D. Esto implica clculos de iluminacin y
superposicin de texturas en modelos tridimensionales. El proceso se muestra en la siguiente
figura.
Una textura es una imagen del tipo bitmap utilizada para cubrir la superficie de un objeto virtual,
ya sea tridimensional o bidimensional, con un programa de renderizado.
sdl1.cpp #include
#include
int main(int argc, char** argv){
if (SDL_Init(SDL_INIT_EVERYTHING) != 0){
std::cout
Teniendo la ventana, podemos crear un renderizador con SDL_CreateRenderer. Esta funcin toma la
ventana y la asocia con un driver de renderizado definido con un ndice, si este es -1 entonces se
utiliza el primero que rena los requerimientos especificados en el tercer parmetro.
Para este caso utilizamos dos banderas cuyo significado es el siguiente:
Bandera SDL_RENDERER_ACCELERATED, queremos usar hardware de aceleracin en la tarjeta
de video.
Bandera SDL_RENDERER_PRESENTVSYNC, queremos que la funcin de presentacin se
sincronice con la velocidad de refresco del monitor.
Para renderizar una imagen BMP necesitamos primero cargarla en memoria y posteriormente
hacia el hardware de renderizado (renderizador), que en este caso es la unidad de procesamiento
grfico (GPU). La funcin SDL_LoadBMP carga la imagen y devuelve una SDL_Surface* que podremos
entonces convertir a SDL_Texture con la funcin SDL_CreateTextureFromSurface para que pueda ser
utilizada por el renderizador.
A continuacin liberamos la superficie con la funcin SDL_FreeSurface puesto que ya no va a ser
necesario ocupar ese espacio de memoria.
Ahora vamos a dibujar la imagen, pero primero limpiamos el renderer con la funcin
SDL_RenderClear.
Con la funcin SDL_RenderCopy renderizamos la textura, le pasamos NULL en los parmetros tres y
cuatro porque queremos renderizar la imagen completa y tambin queremos que se ajuste a la
pantalla.
Actualizamos la pantalla con SDL_RenderPresent ejecutando as el renderizado. Posteriormente
dejamos que el programa espere 5 segundos con SDL_Delay, as damos oportunidad para ver la
pantalla.
Por ltimo destruimos todos los objetos en memoria que habamos creado y salimos de SDL con
SDL_Quit.