seja bem vindo ao forum eof, caso nao seja cadastrado se cadastre para poder visualizar todo o conteudo ^^

Participe do fórum, é rápido e fácil

seja bem vindo ao forum eof, caso nao seja cadastrado se cadastre para poder visualizar todo o conteudo ^^
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Você não está conectado. Conecte-se ou registre-se

[tutorial] SDL em c/c++ - 1º parte

Ir para baixo  Mensagem [Página 1 de 1]

1[tutorial] SDL em c/c++ - 1º parte Empty [tutorial] SDL em c/c++ - 1º parte Ter Jul 30, 2013 8:50 am

Kodo no Kami

Kodo no Kami
master
master

bom galera eu ia fazer a 16º parte do tutorial gtk em c mais resolvi mudar um pouco, como eu to estudando um pouco sdl vou da uma breve introduçao a ela, diferente do gtk o sdl permite manipulaçao de audio e video ela é mais adequada para criaçao de jogos, existe outras api para criaçao de jogos entre elas temos alegro (o jogo mugen foi criado nela eu acho), opengl (boa api para criar graficos 3d), direct-draw/directx (essas duas dizem q é equivalente ao sdl e opengl porem so para windows diferente do sdl/opengl q é multi-plataforma), nao vou ensinar instalar o sdl pq e facil basta baixar os modulos e linkar com seu compilador ou IDE

[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]

para começar temos q declarar a biblioteca SDL/SDL.h (quando eu começei a pesquisar sobre ela lembro de ver alguns tutorias dizendo para declarar apenas SDL.h mais nunca funciono aq, deve ser para outros sistemas ou versao sei la '-' )

Código:
#include <stdio.h>
#include <SDL/SDL.h>

int main(void)
{
}

agora falta agente iniciar o sdl com a funçao SDL_Init, para ser mais especifico temos q iniciar determinada parte do sdl q pode ser o audio ou video entre outras coisas, por hora vamos iniciar apenas o video entao passamos como argumento para a funçao a constante SDL_INIT_VIDEO

Código:
#include <stdio.h>
#include <SDL/SDL.h>

int main(void)
{
   SDL_Init(SDL_INIT_VIDEO);
}

agora temos q usar uma funçao para finalizar o programa q seria o SDL_Quit

Código:
#include <stdio.h>
#include <SDL/SDL.h>

int main(void)
{
   SDL_Init(SDL_INIT_VIDEO);
   SDL_Quit();
}

para agente compilar temos q linkar com SDL

gcc fts.c -o hack -l SDL

para criar uma janela usamos a funçao SDL_SetVideoMode passamos como argumento a largura, altura, tamanho em bytes, e como ela sera criada(memoria ram, memoria da placa video etc), no caso vou criar uma janela 600,400x32 e na memoria ram (SDL_SWSURFACE), tambem temos q atribuir a funçao a um ponteiro do tipo SDL_Surface

Código:
#include <stdio.h>
#include <SDL/SDL.h>

int main(void)
{
   SDL_Surface *janela;
   SDL_Init(SDL_INIT_VIDEO);
   janela = SDL_SetVideoMode(600,400,32,SDL_SWSURFACE);
   SDL_Quit();
}

quando executar o programa vai finalizar rapidamente isso ocorre devido o sdl nao ter um loop infinito para evento diferente do gtk q tinha gtk_main, para agente criar um basta criar uma variavel do tipo int com um valor verdadeiro no caso 1 e passar ele como argumento para um laço while

Código:
#include <stdio.h>
#include <SDL/SDL.h>

int main(void)
{
   SDL_Surface *janela;
   int loop = 1;
   SDL_Init(SDL_INIT_VIDEO);
   janela = SDL_SetVideoMode(600,400,32,SDL_SWSURFACE);
   while(loop)
   {
   }
   SDL_Quit();
}

o programa vai ficar em um loop infinito mais sem esperar evento, para fazer ele ficar checando evento usamo outro loop while passamos como argumento a funçao SDL_PollEvent dentro dessa funçao passamos o endereço de memoria de uma variavel do tipo SDL_Event

Código:
#include <stdio.h>
#include <SDL/SDL.h>

int main(void)
{
   SDL_Surface *janela;
   SDL_Event e;
   int loop = 1;
   SDL_Init(SDL_INIT_VIDEO);
   janela = SDL_SetVideoMode(600,400,32,SDL_SWSURFACE);
   while(loop)
   {
      while(SDL_PollEvent(&e))
      {
      }
   }
   SDL_Quit();
}

dentro do while usamos a condiçao if passamos e comparamos o atributo type do evento com a constante SDL_QUIT e dentro do escopo atribuimos a variavel q segura o primeiro o loop o valor 0 para finalizar (traduzindo tudo quando aperta no x o programa fecha '-' )

Código:
#include <stdio.h>
#include <SDL/SDL.h>

int main(void)
{
   SDL_Surface *janela;
   SDL_Event e;
   int loop = 1;
   SDL_Init(SDL_INIT_VIDEO);
   janela = SDL_SetVideoMode(600,400,32,SDL_SWSURFACE);
   while(loop)
   {
      while(SDL_PollEvent(&e))
      {
         if(e.type == SDL_QUIT)
         {
            loop = 0;
         }
      }
   }
   SDL_Quit();
}

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

bom galera isso e so uma introduçao, logo logo vou fazer a continuaçao dele ^^

by hfts315

https://endoffile.umforum.net

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos