OpenGL and SDL2 game engine written in C++. This project was created in collaboration with Maxwell Hunt.
- Built with Entity Component System1 (ECS) architecture
- 3D model loading and rendering with transformations
- Texture mapping
- Text rendering
- Access to the user input in multiple forms
- Collision detection and physics simulation with dynamics and collision resolution
Over the course of this project we learned how OpenGL works to render the graphics that many of us take for granted when we play video games, watch an animation, or use any kind of 3D software. We learned how to structure projects around the framework and documented them so that they are usable, readable and maintainable.
We also learned how to debug, test and fix low-level issues using RenderDoc and the Visual Studio C++ debugger and profiler.
Here's a quick video showcase of the 3D model rendering, collision detection and physics engine simulation, text rendering and user input systems in action:
Before building this project, you will need Microsoft Visual Studio 2022 with the Desktop development with C++ workload.
Next, clone the project and open GLEngine.sln
using Visual Studio. The project should already be configured and necessary binaries are present; build in either Release x64
or Debug x64
.
Currently no binaries are released, this may change in the future.
- Intro to Modern OpenGL Tutorial by Benny Bobaganoosh "thebennybox"
- 3D Game Programming Tutorial by Benny Bobaganoosh "thebennybox"
- Texture Packing for Fonts by Edward Lu "StrayPixels"
- Designing a physics engine by IainWinter
- https://www.khronos.org/opengl/wiki (OpenGL Documentation)
- https://learnopengl.com (OpenGL Documentation and tutorials)
- https://docs.gl (OpenGL Documentation)
Please see the LICENSE for more information.
Footnotes
-
Software architecture pattern sometimes used for game development. It consists of, as the name would suggest, components, entities, and systems. Components refer to pieces of connected data, entities refer to collections of components which are stored together in memory and systems are processes which act on entities which have certain specified components. ↩