Tutorial OpenGL v3.0
Nesse artigo, trago-lhes a biblioteca SFML junto com OpenGL.
[ Hits: 17.169 ]
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
Utilizando técnicas recursivas em C e C++
Acessando a porta paralela via Linux
openCertiface: Biométrica Facial em nuvem baseada em software livre
Estudando recursividade direta e indireta
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
É cada coisa que me aparece! - não é só 3% (1)
Alguma pessoa pode me ajudar com drriver Core i3 7020u (Debian 12)? (2)
Mikrotik não mostra bytes nem packtes (1)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código [RESOLVID... (4)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta