OpenGL Engine
Source codeSummary
- Goal: Improve understanding of low level engine code, and rendering in particular.
- Languages: C++, GLSL
- Tech Stack: OpenGL, glm, glfw, objloader, stb, FreeType
- Notable Achievement: 'Unlimited' real-time shadow casters.
- Status: Completed (to purpose)
Completed Features
- Entity-Component architecture with templated getters and setters
- Phong lighting model. [1]
- Arbitrary number of spot, point, and directional lights. [1]
- Real-time shadow casting for arbitrary number of casters. [1]
- AABB & sphere collider physics resolution. [1]
- Basic input handling. [1]
- Texture rendering. [1]
- Screen-space text rendering. [1]
Description
This project was my first attempt at a game engine proper, and intended to be entirely educational with no further purpose.
I consider this project to be of relatively poor quality, though it served its purpose well in significantly bolstering my understanding of rendering, engine architecture, and
C++ in general.
Challenges
Going into this project, my understanding of low level graphics was limited at best and I believe it shows in some of the logical and architectural decisions I made throughout the engine. Additionally, most of my understanding of what architecture feels good to use comes from Unity's C# API and engine architecture. It's reflected in this project through the similarity between the two Entity-Component APIs. After reflecting on the project I found the EC implementation to be lacking and difficult to work with. This project also involved significant configuration issues in the beginning, leading to learning and utilising Premake for the latter part of this project and all future C++ projects I've worked on.
Future considerations
I consider this project to be archived and 'complete' as it has served its purpose. It is superceded by the Thera engine.