SDL2 Imagem

INFORMAÇÃO IMPORTANTE PARA OS TUTORIAIS!
Qualquer método da SDL que encontrar aqui e não entender sua função, Pesquise-a na WIKI da SDL.

Agora que já sabemos criar uma janela,  SDL2 CRIANDO UMA JANELA, vejamos como colocar uma imagem na tela.

Primeiro devemos incluir a biblioteca "SDL2/SDL_image.h"  A imagem, assim como a janela, precisa de um variável para ser utilizada. O tipo dessa varável é SDL_Surface*. Além disso, uma variável para a superfície da janela será necessária. Nessa variável retornaremos a superfície associado com a janela.

#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
using namespace std;

int main(int argc, char **argv) {

SDL_Init(SDL_INIT_VIDEO);//Inicializa a SDL

SDL_Window *janela = NULL;//Variavel da janela
SDL_Surface *imagem = NULL;//Variável da Imagem
SDL_Surface *superficie = NULL;



Depois de ter declarado a variável da imagem, da superficíe, ter inicializado o vídeo e criado a janela. Vamos pegar os dados da janela armazená-los na variável da superfície com o comando SDL_GetWindowSurface(janela). A imagem, iremos carregá-la  na variável criada para armazena-la utilizando: IMG_Load("diretório da imagem/nome da iamgem.extensão"). (Lembrando que este comando funciona apenas com a biblioteca SDL2_Image). 
O comando SDL_BlitSurface nos permitirá mostrar a imagem na tela assim que solicitarmos que está seja atualizada.

Vejamos:

superficie = SDL_GetWindowSurface(janela);

imagem = IMG_Load("Imagens/OlaSDL2.png");//carrega a imagem

SDL_BlitSurface(imagem, NULL ,superficie ,NULL);//Desenha a imagem na janela
SDL_UpdateWindowSurface(janela);//Atualiza a janela

SDL_Delay(3000);//Espera 3 segundos

Os parâmetros do método SDL_BlitSurface são respectivamente: o nome da variável da imagem, O local de origem, o tamanho da tela e o local de destino. Esses parâmetros serão abordados novamente de forma mais clara e manipulável no tutorial de eventos com o mouse.

Agora, para evitar a ocupação de memória total do sistema, devemos liberar as imagens:

SDL_FreeSurface(nome da variavel)



SDL_FreeSurface(imagem);
SDL_FreeSurface(superficie);//libera a imagem
SDL_DestroyWindow(janela);
SDL_Quit();

return 0;
}

Exemplo de saída da imagem:


Faça o dowload do projeto aqui: https://drive.google.com/openid=0B9s0AqjHtGwGNmV1MEhQTWZ0cTQ


Veja como criar o loop no game!
(link em breve)

Alguma duvida? comente abaixo!