Um motor baseado em voxels feito do zero.
Este projeto foi um desafio pessoal desenvolvido entre outubro e novembro de 2024. O objetivo não era criar um jogo comercial ou um clone perfeito de Minecraft, mas sim entender na prática como a computação gráfica 3D funciona por debaixo dos panos, sem o auxílio de engines modernas.
Nota: Este repositório utiliza uma abordagem de OpenGL mais legada (focada no aprendizado estrutural). Posteriormente, iniciei uma tentativa de reescrita utilizando OpenGL Moderno (Shaders, VBOs, VAOs), que serviu como mais um experimento de aprendizado, mesmo não tendo sido concluída.
O projeto serviu como meu laboratório para aprender C++ e me aprofundar na renderização via OpenGL. Construir a estrutura de pastas, configurar a compilação e renderizar as primeiras primitivas me ensinaram muito sobre gerenciamento de memória e arquitetura de software de baixo nível.
A parte mais complexa e recompensadora foi a câmera 3D. Calcular pitch, yaw, sensibilidade de mouse e matrizes de projeção exigiu entender na marra conceitos matemáticos que eu ainda não dominava no ensino médio. Fazer a navegação pelo mundo parecer natural foi um grande quebra-cabeça.
- C++ 20: Linguagem base do projeto.
- OpenGL: API gráfica para renderização.
- GLFW / GLAD: Gerenciamento do contexto de janela e carregamento das extensões do OpenGL.
- GLM: Matemática vetorial e matricial essencial para as transformações 3D.
- Dear ImGui: Interface de depuração em tempo real.
- CMake: Configuração e orquestração da build.
A base de código foi organizada para separar a lógica de gerenciamento de jogo da parte gráfica e do mundo:
src/Game/: Gerencia o loop principal da aplicação.src/GameHelpers/: Concentra a lógica de input, configuração de janela e o sistema de Câmera (movimentação e orientação).src/World/: Responsável por gerar os objetos no espaço (Chunks, Blocos, Terreno, Esferas e Primitivas).src/Texture/: Carregamento e mapeamento das texturas.src/debug/: Integração com o ImGui para exibir métricas e variáveis em tempo real.
Este projeto teria sido muito mais difícil sem o excelente conteúdo do Sérgio Silva. A playlist OpenGL C++ - Gráficos 3D (2020) foi uma referência fundamental para que eu entendesse os bastidores da criação de gráficos 3D.