Tutorial OpenGL v3.0

Nesse artigo, trago-lhes a biblioteca SFML junto com OpenGL.

[ Hits: 13.452 ]

Por: Thiago Henrique Hüpner em 15/06/2015


Brincando com o OpenGL



Agora que temos uma janela pronta, vamos usar o OpenGL.

Vamos criar a (tão famosa) função "desenhaNaTela()":

#include <SFML/OpenGL.hpp>
#include <SFML/Graphics.hpp>

// Função que Desenha na Tela
void desenhaNaTela(){

// 'Limpa' a tela usando a cor de 'limpar' a tela
    glClear(GL_COLOR_BUFFER_BIT);

    // Define a Cor de 'limpar' para Branco usando
            //   Red     Blue    Green   Alpha
    glClearColor(255.0f, 255.0f, 255.0f, 1.0f);

    // Reinicia todas as transformações e/ou rotações
    glLoadIdentity();

    // Rotaciona x por y com 0 de profundidade (usado p/ jogos 3D)
    glTranslatef(400/2,400/2,0);

    // Começa a desenhar Quadrados
    glBegin(GL_QUADS);

        // Colori de Verde
        glColor3f (  0.0f,  1.0f, 0.0f );

        // Lado Inferior Esquerdo
        glVertex2f( 0,  10.0f );

        // Colori de Vermelho
        glColor3f (  1.0f,  0.0f, 0.0f );

        // Lado Superior Esquerdo
        glVertex2f( 0, 0 );

        // Colori de Amarelo
        glColor3f (  1.0f,  1.0f , 0.0f);

        // Lado Superior Direito
        glVertex2f(  10.0f, 0 );

        // Colori de Azul
        glColor3f (  0.0f,  0.0f, 1.0f );

        // Lado Inferior Direito
        glVertex2f(  10.0f,  10.0f );

    // Termina de Desenhar
    glEnd();
}

// Funcao para inicializar o OpenGL
void inicializaOpenGL() {

    // Define a Cor de 'limpar' para Branco usando
    //   Red     Blue    Green   Alpha
    glClearColor(255.0f, 255.0f, 255.0f, 1.0f);

    // Avisa o OpenGL que qualquer alteração futura
    // afetará a Câmera ( O Observador)
    glMatrixMode(GL_PROJECTION);

    //  Reinicia todas as transformações e/ou rotações
    glLoadIdentity();

    // Define a projeção cartesiana 2D iniciando de (0,0)
    // No Lado Superior Esquerdo (ficando igual a projeção do SDL 'puro')
    gluOrtho2D(0,400,400,0);

    // Avisa o OpenGL que qualquer alteração futura
    // afetará o/os desenho/desenhos
    glMatrixMode(GL_MODELVIEW);

    // 'Limpa' a tela usando a cor de 'limpar' a tela
    glClear(GL_COLOR_BUFFER_BIT);
}

int main(void) {
    // Cria uma janela de 400x400 com o titulo "Teste com OpenGL"
    sf::RenderWindow janela (sf::VideoMode(400,400),"Teste com OpenGL");

    // Variavel booleana para indicar se o programa "estaRodando"
    bool estaRodando = true;
    // Variavel para Eventos
    sf::Event evento;

    // Inicializa o OpenGL
    inicializaOpenGL();

    // Main Loop
    while(estaRodando) {
        // Se existir eventos coloca na variavel
        while(janela.pollEvent(evento)) {
            // Se foi clicado no 'X' da janela
            if(evento.type == sf::Event::Closed) {
                // "estaRodando" é falsa
                estaRodando = false;
            }
        }
        // Comecar o OpenGL aqui

        desenhaNaTela();

        janela.display();
    }

    janela.close();

    return 0;
}

Linux: Tutorial OpenGL v3.0
Compile com:

g++ SegundaJanela.cpp -o SegundaJanela `pkg-config sfml-all --cflags --libs` -lGL -lGLU

Explicação:

void desenhaNaTela() :: Função que será responsável por "desenhar na tela".

glTranslatef(400/2,400/2,0); :: Rotaciona x por y com 0 de profundidade (usado para jogos 3D).

glBegin(GL_QUADS); :: Começa a desenhar quadrados.

glColor3f ( 0.0f, 1.0f, 0.0f ); :: Define alguma cor, nesse caso, o verde.

glVertex2f( 0, 10.0f ); :: Define um ponto (x,y), nesse caso, é o lado inferior esquerdo.

glEnd(); :: Termina de desenhar.

E no main:

desenhaNaTela(); :: Chama a função de desenhar na tela.

Agora podemos brincar com o OpenGL. =D

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Primeira integração do OpenGL com o SFML
   3. Brincando com o OpenGL
   4. Simulando uma gambiarra
   5. Simulando uma gambiarra - Parte 2
   6. Agradecimentos, fontes e links úteis
Outros artigos deste autor

Visual Studio no Linux

Tutorial OpenGL v2.0

Tutorial SFML

Ubuntu/Debian/Kali Linux e outros no Android

Tutorial OpenGL

Leitura recomendada

Mapear objetos em C

SDL e C - Uma dupla sensacional

Estudando recursividade direta e indireta

SDL - Ótimo para criação de jogos

Desenvolvendo um plugin de visualização para o XMMS (Parte 1)

  
Comentários
[1] Comentário enviado por Thihup em 16/06/2015 - 09:17h

Sem comentários? o.0

Acho que já deu de artigos sobre OpenGL, certo?

Se quiserem, ainda tenho mais um artigo pré encaminhado.

[]'s

T+

[2] Comentário enviado por alexsdn em 16/06/2015 - 22:48h

Excelente artigo, de grande valia. Espero que você continue contribuindo do básico ao avançado sobre OpenGL.
Abraço!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts