This is an openGL project where i showcase a full series of commits that resolve around me learning about the openGL libraries of GLEW,GLFW and SDL, firstly how to set them up. Secondly I use the rendering pipeling to create with shaders my first triangle and then set up the GLM openGL Maths Library to learn about the transformations of Translation, Rotation and Scaling. I then used Interpolation and Indexed Draws with projections and I continued with the camera set up to be moved when keys are pressed but also control it with mouse movements adding in the end two triangles. Later I researched about texture and image loading where I added the textures of brick and dirt on the two triangles as show in picture 1. Afterwards I go on using Ambient Lighting to dim a red coloured directional lighting to the two triangles as shown in picture 2.
I proceed in adding directional diffuse lightning as shown in the following pictures but with the difference that picture 3 has phong shading whereas picture 4 has flat shading.
Added Specular Lighting on both triangles one with dull one with shiny material as shown in picture 5.
Added two different point Lights, green and blue that shine on the two triangle pyramids and the floor as seen on picture 6. The shininess can be seen on picture 7.
Picture 6
Picture 7
Added a flashlight camera based position and direction that changes depending the depth as shown in pictures 8 and 9.
Pciture 8
Picture 9
Added a model importer with proper memory allocation and saving whilst also importing textures for each model as shown in the pictures below.
Picture 10
Picture 11
Added Directional Shadow Maps
Picture 12
Added Omni Directional Shadow Maps
Picture 13
Added a Skybox with adjusted directional Light to imitate the sun
Picture 14
All in all these are the things i managed to learn and use correctly in this small scale project that could be also the start of a game engine:
How to create and manipulate windows
How to draw meshes/models
How to use Shaders
How to use Uniforms
How to use GLM to transform models
How to use Indexed Draws
How to use Projections
How to create and control a camera
How to map textures
How to use the Phong Lightning Model
How to implement Directional, Point and Spot Lights
How to import models
How to create and use Shadow Maps
How to implement a Skybox
All credits go to Ben Cook who with his Udemy course helped me learn about graphics programming.




