This demo was a way of getting to grips with real time rendering using the OpenGL API. I decided to use the 'core profile', also known as modern OpenGL as it forces the developer to write shaders to render their geometry.
The player can move freely in 3D as well as switch between different light types; directional lights, points lights and spot lights. I used the Blinn-Phong lighting model for efficient specular highlights.
I also incorporated a model loader to read and draw 3D models from Wavefront .obj files. Lastly, I added help text by drawing generated glyphs onto 2D textures using the 'FreeType' library.
Visual Studio 2017
OpenGL (v3.3 core profile)
WHAT I LEARNED
Writing shaders in GLSL
A deeper knowledge of the maths involved in creating realistic lighting effects
Creating a FPS style camera system
Loading .obj models from their vertex, texture, normal and face information
How to switch between OpenGL states
Processing data through vertex array objects (VAOs) and vertex buffer objects (VBOs)