Primeiramente vamos arranjar uma imagem .bmp, na internet você acha vários pacotes lotados de imagens nesse formato, com uma rápida pesquisa você acha um pacote desses. Enfim, para inserirmos uma imagem, vamos precisar declarar um ponteiro para a surface "imagem". Então, abaixo da linha:
SDL_Surface* tela;
Adicione:
SDL_Surface* imagem;
Se preferir, você pode iniciar as dias surfaces como NULL:
SDL_Surface* tela = NULL;
SDL_Surface* imagem = NULL;
Ótimo, agora vamos carregar a imagem. Faremos isso usando a função SDL_LoadBMP().
E, como fizemos anteriormente, vamos dizer que usaremos a surface "imagem" para atribuir a imagem em nossa "tela". E passaremos a imagem como argumento de função.
imagem = SDL_LoadBMP("woman.bmp");
O "woman.bmp" é a minha imagem, ela está no mesmo diretório do código. Mas você poderia buscada em outro diretório, como por exemplo:
imagem = SDL_LoadBMP("/home/USER/imagens/woman.bmp");
Ou simplesmente criar uma diretiva para isso:
#define CAMINHO_IMAGEM "/home/USER/imagens/woman.bmp"
E depois usar:
imagem = SDL_LoadBMP(CAMINHO_IMAGEM);
Mas não faremos isso agora. Vamos focar na imagem.
OK, carregamos a imagem, mas ainda não a colocamos em nossa "tela". Vamos fazer isso com a função SDL_BlitSurface().
Adicione a linha:
SDL_BlitSurface(imagem, NULL, tela, NULL);
Pronto! A imagem já foi aplicada à nossa "tela". Vamos agora usar uma função que "atualize" a nossa janela, a função é a SDL_Flip().
Como parâmetro de função, passamos o nome da surface responsável pela tela, neste caso, é "tela" mesmo. :)
SDL_Flip(tela);
Agora vamos liberar a imagem, para isso, use a função:
SDL_FreeSurface();
Passando como argumento a surface responsável pela determinada imagem, neste caso é "imagem" mesmo.
SDL_FreeSurface(imagem);
Após isso, já temos nosso código pronto. O código inteiro deve ficar assim:
#include <stdio.h>
#include <SDL/SDL.h>
#define ALTURA 640
#define LARGURA 480
#define BITS 16
#define TEMPO 4000
int main()
{
SDL_Surface* tela = NULL;
SDL_Surface* imagem = NULL;
SDL_Init(SDL_INIT_EVERYTHING);
SDL_WM_SetCaption("Meu programa", NULL);
tela = SDL_SetVideoMode(ALTURA, LARGURA, BITS, SDL_SWSURFACE);
imagem = SDL_LoadBMP("woman.bmp");
SDL_BlitSurface(imagem, NULL, tela, NULL);
SDL_Flip(tela);
SDL_FreeSurface(imagem);
SDL_Delay(TEMPO);
SDL_Quit();
return 0;
}
Vamos compilar e executar:
gcc SdlCode.c -o SdlCode -lSDL
$ ./SdlCode
Como saída você deve ter algo como:
Lá está, nossa imagem carregada na tela! :)