Skip to content

LucasMartinsIT/RenderLab-OpenGL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧪 OpenGL Render Lab

Este repositório contém um laboratório de renderização gráfica desenvolvido em C++ com OpenGL Moderno (Core Profile 3.3). O projeto serve como estudo prático e base arquitetural para o desenvolvimento de uma Game Engine customizada (projeto de TCC).

O código foca na manipulação do pipeline gráfico programável, gerenciamento de memória na GPU (VAO, VBO, EBO), compilação de Shaders (GLSL) e implementação de física básica de movimentação utilizando Delta Time.

🎮 Demonstração

RenderLab

✨ Funcionalidades e Geometrias

O laboratório renderiza 5 formas geométricas independentes, cada uma demonstrando diferentes capacidades da API:

  1. 🔲 Retângulo Central (Controlável): Possui vértices com cores distintas (Vermelho, Verde, Azul e Amarelo), permitindo que o Fragment Shader crie um gradiente perfeito automaticamente. Responde aos inputs do teclado.
  2. 🔺 Triângulo (Estático): Renderizado com cor sólida (Vermelha) e posicionado de forma fixa à esquerda da tela.
  3. 🛑 Hexágono (Animação Vertical): Renderizado em cor Ciano. Possui uma rotina de animação de "ping-pong" no eixo Y, subindo e descendo automaticamente a cada frame.
  4. Pentágono (Estático): Renderizado com uma paleta de cores em tons de roxo e rosa, posicionado fixamente no canto superior direito.
  5. 🔶 Diamante (Animação Horizontal): Renderizado com um gradiente de cores quentes (Amarelo, Laranja e Vermelho). Possui uma animação de "ping-pong" no eixo X, movendo-se da esquerda para a direita na parte inferior da tela.

⌨️ Controles

O objeto central (Retângulo Colorido) pode ser movido livremente pelo espaço bidimensional da janela usando o teclado:

  • Seta para Cima (↑): Move no eixo +Y
  • Seta para Baixo (↓): Move no eixo -Y
  • Seta para Direita (→): Move no eixo +X
  • Seta para Esquerda (←): Move no eixo -X

🛠️ Tecnologias e Bibliotecas

  • Linguagem: C++
  • API Gráfica: OpenGL 3.3 (Core Profile)
  • GLFW (glfw3): Gerenciamento de janelas, contexto OpenGL e captura de input (teclado).
  • GLEW: Carregamento de ponteiros de funções e extensões modernas do OpenGL.
  • GLSL: Shaders customizados para cálculos de vértices e fragmentos.

⚙️ Destaques Técnicos do Código

  • Delta Time: Implementação de cálculo de deltaTime no loop principal para garantir que os objetos animados (Hexágono e Diamante) se movam à mesma velocidade em qualquer computador, independente do framerate.
  • Uniforms: Uso de variáveis uniform vec2 e uniform vec4 para enviar atualizações de posição (offset) e cor da CPU para a GPU em tempo de execução, evitando a recriação custosa de buffers.
  • Element Buffer Objects (EBO): Reutilização inteligente de vértices através de índices para desenhar formas complexas (como o hexágono de 12 índices e o pentágono) economizando memória de vídeo.

🚀 Como Executar

Para rodar este projeto na sua máquina, certifique-se de ter um ambiente C++ configurado com as bibliotecas estáticas ou dinâmicas do GLFW e GLEW.

  1. Clone o repositório:
    git clone [https://github.com/SEU_USUARIO/NOME_DO_REPOSITORIO.git](https://github.com/SEU_USUARIO/NOME_DO_REPOSITORIO.git)

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors