Tutorial OpenGL v3.0
Nesse artigo, trago-lhes a biblioteca SFML junto com OpenGL.
[ Hits: 18.412 ]
Por: Thiago Henrique Hüpner em 15/06/2015
#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;
}

Ubuntu/Debian/Kali Linux e outros no Android
Criando aplicativos para o iPhone no Linux (sem Xcode e MacOS X)
Tratamento de exceções na linguagem C
Utilizando técnicas recursivas em C e C++
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
O programa assinador digital (1)
PIP3 - erro ao instalar módulo do mariadb para o Python (9)
É normal não gostar de KDE? (8)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)









