segunda-feira, 5 de março de 2007

SDL - Parte 1


Olá Pessoal!
É com grande satisfação que eu anuncio hoje (05/05/2007) que meu blog estará com um novo rumo, porém mantendo os objetivos iniciais, que eram configuração de sistema, tutorias, etc...
Bom, como vocês devem ter notado na chamada do post, este irá se tratar de SDL.

O que é SDL?
SDL é uma API gráfica que cuida de gerenciamentos de janelas e/ou controle de entrada de dados.
O SDL é um conjunto de funções onde se pode fazer quase tudo, digo quase porque eu ainda não utilizei a biblioteca inteira, mas pretendo hehehe.
Então chega de bla bla bla e vamos começar.
Vou partir do princípio que todos vocês já sabem ao menos um básico de C ou C++ e que já tem a biblioteca do SDL instalada no diretório padrão (/usr/include). Pelo que eu sei, e o Ubuntu e os Debian's Like não vem com a SDL instalada por padrão, mas nada que um APT não resolva.

Bom vamos lá.
Crie um arquivo com extensão .c

zimmermann@Anakin:~$ vi testeSDL.c


Dica: Se você deseja utilizar o VI, pode usar o meu arquivo .vimrc e seja felize heheheh. Ou caso você tenha uma máquina parruda, você pode utilizar o Eclipse para desenvolver em C/C++ perfeitamente.

Agora, vamos ao que interessa:

#include <stdio.h> //Biblioteca padrão
#include <SDL/SDL.h> //Biblioteca do SDL

int main(int argc, char **argv){ //Main normal

SDL_Surface *janela; //Surface SDL

if(SDL_Init(SDL_INIT_VIDEO) == -1){ //Inicializando o vídeo e checando erros
printf("Problema na inicializacao do SDL, saindo!"); // Mensagem de DEBUG
exit(0); //Saia do programa
}
janela = SDL_SetVideoMode(540, 480, 16, SDL_ANYFORMAT | SDL_DOUBLEBUF); //Iniciando a janela

SDL_Delay(2000); //Tempo até fechar a janela
SDL_Quit(); //Fechando todo o SDL
return 0; //Retornando ao sistema
}



Para compilar este código, basta usar o seguinte comando:

zimmermann@Anakin:~$ gcc -o testeSDL testeSDL.c -lSDL


Bom, como se pode perceber, inicializar uma janela em SDL não é muito complicado não né?
Então deixa eu explicar o que ocorre lá em cima:
na linha #include //Biblioteca do SDL estamos importando a biblioteca que precisamos.
Já na linha SDL_Surface *janela; //Surface SDL estamos inicializando uma surface chamada janela. Quase tudo que iremos utilizar, tanto para imagens e quanto a janelas, será uma surface.
Agora na linha if(SDL_Init(SDL_INIT_VIDEO) == -1) estamos inicializando o video para podermos utilizar a interface.
E na linha janela = SDL_SetVideoMode(540, 480, 16, SDL_ANYFORMAT | SDL_DOUBLEBUF); estamos inicializando uma janela de 540x480 com 16 bits por pixel e com algumas flags. Não vou entrar em detalhes sobre flags ainda, mas este é um assunto muito interessante.
E na linha SDL_Delay(2000); é o tempo até a janela se fechar automaticamente.
E por fim, na linha SDL_Quit(); estamos fechando toda a SDL que está em memória.

Bom por hoje é só pessoal. Qualquer dúvida, por favor mail-me

diego.c.zimmermann at gmail dot com

Até mais e obrigado, logo logo mais artigos de SDL frente.

3 comentários:

Lúcio Corrêa disse...

Na gora de postar, ele "comeu" os nomes dos cabeçalhos nos #includes.

Abraço

Fred disse...

ei diego tipo, vc ta dando nocoes de SDL eu ja dei uma olhada e tal e curti!
sera que em vez de criar tuts para criacao de jogos, voce poderia postar tuts sobre GUI's em SDL.
pq isso em portugues axo meio dificil!

Fagner disse...

O código esta muito bom, bom mesmo, bem comentado, só uma falha, você usa exit(0), para sair do programa certo?
1 - Você tem que incluir o arquivo de cabeçalho stdlib.h.
2 - No caso, você utilizou exit(0), como um erro, quando você utiliza este parâmetro com zero, significa que ocorreu tudo bem, no programa, mas este não é o caso, quando quer se retornar uma mensagem de erro, o valor de retorno é 1.

No mais ficou ótimo, Parabéns

buscapé

dell
Saiba onde tem o melhor preço antes de comprar