Here is a video of a very work in progress graphics engine I have been working on using the OpenGL API, though I plan on supporting other APIs such as DirectX and even Vulkan (whenever I get round to learning it!). To do this I have implemented an abstraction layer that is intended to keep the various components pluggable when swapping APIs. Below is my class diagram which I made before getting started:
Here is a peak into some of the code, and some of the interfaces and abstract classes used:
And here is a video of the graphics engine in action:
It supports lighting, (directional light) shadow mapping, texturing, model loading, skyboxes, input and contains an entity component system.
More to come!