Tutorial OpenGL v3.0
Nesse artigo, trago-lhes a biblioteca SFML junto com OpenGL.
Parte 3: Brincando com o OpenGL
Agora que temos uma janela pronta, vamos usar o OpenGL.
Vamos criar a (tão famosa) função "desenhaNaTela()":
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
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;
}

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
Acho que já deu de artigos sobre OpenGL, certo?
Se quiserem, ainda tenho mais um artigo pré encaminhado.
[]'s
T+