Practica SDL Intro Parte1 Ver1

download Practica SDL Intro Parte1 Ver1

of 3

description

Practica de SDL

Transcript of Practica SDL Intro Parte1 Ver1

  • 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.