Sapphire is a game engine developed in C++ using OpenGL. It started as a personal project to explore game engine architecture and learn how to manage a multi-system application. Inspired by The Cherno's game engine series, this project has been a hands-on journey into graphics programming, rendering techniques, and engine development.
I wanted to understand how a game engine works under the hood while also tackling the challenges of structuring a multi-system application. Rather than focusing purely on the complexity of code, my goal was to design an engine that effectively integrates different components, such as rendering, scene management, and EditorUI.
- Core Engine: I began by implementing the core application that I could rely on to build the redenring features.
- Graphics Features: I progressively added:
- Quad rendering
- Texturing & blending
- Batch rendering
- Frame buffers
- Lighting System: I experimented with a simple shader-based lighting system to push my understanding of real-time rendering.
- Scene Management & Editor: Currently, I am developing a scene management system and an editor to make the engine more practical for game development.
To get started, clone the repository:
git clone https://github.com/Theo-Mestre/sapphire.git
Then, build the project using the SetupWindows.bat
script located inside the Scripts
folder.
- Language: C++20
- Rendering: OpenGL 4.5
- GLFW (Windowing and Input)
- Glad (OpenGL Loader)
- Spdlog (Logging)
- ImGui & ImPlot (UI Framework)
- GLM (Mathematics Library)
- EnTT (Entity Component System)
This project is licensed under the MIT License - see the LICENSE file for details.