Tutorial OpenGL v3.0
Nesse artigo, trago-lhes a biblioteca SFML junto com OpenGL.
[ Hits: 18.556 ]
Por: Thiago Henrique Hüpner em 15/06/2015
#include <SFML/OpenGL.hpp>
#include <SFML/Graphics.hpp>
void desenhaNaTela(sf::RectangleShape retangulo, float r = 255, int g = 0, int b = 0) {
glLoadIdentity();
// Pega a posicao do Retangulo
sf::Vector2f posicao = retangulo.getPosition();
// Pega o taamanho do retangulo
sf::Vector2f tamanho = retangulo.getSize();
// Define a cor para Vermelho
glColor3ub ( r, g, b );
// Inicia quadrados
glBegin(GL_QUADS);
// Primeira posicao: (x,y)
glVertex2f(posicao.x,posicao.y);
// Segunda posicao: (x+tamanho.x,y)
glVertex2f(posicao.x + tamanho.x, posicao.y);
// Terceira posicao: (x+tamanho.x,y + tamanho.y)
glVertex2f(posicao.x + tamanho.x, posicao.y + tamanho.y);
// Quarta posicao: (x+tamanho.x,y)
glVertex2f(posicao.x, posicao.y + tamanho.y);
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();
// Variavel para armazenar a fonte
sf::Font fonte;
// As fontes geralmente ficam nessa localizacao "UBUNTU!"
if(!fonte.loadFromFile("/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-B.ttf")) {
// Erro ao carregar a fonte
exit(EXIT_FAILURE);
}
// Variavel para armazenar o texto e manipular o a fonte
sf::Text texto;
// Define a fonte a ser utilizada (foi carregada logo em cima)
texto.setFont(fonte);
// Define o Texto
texto.setString("Hello world");
// Define a posicao
texto.setPosition(30,20);
// Define o tamanho em pixels
texto.setCharacterSize(24);
// Define a cor
texto.setColor(sf::Color::Red);
// Define alguns estilos para a fonte
texto.setStyle(sf::Text::Bold | sf::Text::Underlined);
int x = 0, y = 0;
sf::Vector2i posicaoMouse;
// 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;
}
posicaoMouse = sf::Mouse::getPosition(janela);
x = posicaoMouse.x;
y = posicaoMouse.y;
}
// Comecar o OpenGL aqui
glClear(GL_COLOR_BUFFER_BIT);
// Variavel do Retangulo
sf::RectangleShape retangulo;
retangulo.setSize(sf::Vector2f(30,30));
retangulo.setPosition((400-30)/2,(400-30)/2);
desenhaNaTela(retangulo);
janela.pushGLStates();
// Desenha o Texto
janela.draw(texto);
janela.popGLStates();
janela.display();
}
janela.close();
return 0;
}

Ubuntu/Debian/Kali Linux e outros no Android
Acessando a porta paralela via Linux
Ponteiros - Saindo de Pesadelos
Desenvolvendo para microcontroladores em GNU/Linux
lib cURL - Trabalhe com URLs em C
SDL - Ótimo para criação de jogos
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Estou tentando ser legalista, mas tá complicado! (0)
É normal não gostar de KDE? (17)
PERFIL CRIADO NO SAMBA AD DC NÃO LOGA NO WINDOWS 10 E 11 (0)
PERFIL CRIADO NO SAMBA AD DC NÃO LOGA NO WINDOWS 10 E 11 (1)









