2023-06-19
| Last edit :2023-06-19
| Status :Finished
Created in 3 weeks from March 13th to 31st 2023 during my second semester in Game Engine Programming at Isart Digital.
My goal for this project was to create a C++ rendering library using OpenGL targeted towards video games development.
The library offers useful features for game development, as well as a simple demo project. To avoid unnecessary compile times and code bloat, the library has been split in five (5) distinct modules, each handling a specific set of capabilities :
Core
: Graph data structure, Logging, Assertions, Eventing, Resource Management, Service Locator, Thread Pool, Timer, Common utility functionsApp
: Windowing, Input management, Application contextEntities
: Component-based scene managementPhysics
: Simple rigid body physics without angular velocity, Ray casting, Collider overlap testing (similar to Unity's Physics.Overlap
functions)Rendering
: OpenGL Rendering Engine, Blinn-Phong shading, Shadow MappingSince the main focus of this project was the renderer, I used the following libraries to facilitate some parts of the development:
Creating a modular rendering library in C++ using OpenGL allowed me to deepen my knowledge of C++, while also consolidating my planning and organization skills. Furthermore, this exercise was a great opportunity to learn more about the various challenges of library design and software architecture. Finally, I learned a lot about graphics programming and OpenGL, from GLSL shader development to useful rendering techniques such as shadow mapping.
The library is, although constantly being improved, usable, and has been used to create a 3D puzzle game.
C++, OpenGL, GLSL, Software Architecture, Graphics Programming, Engine Programming, Library Programming
Seen 264 times