FakeGL

The aim of this project was to gain an understanding of the OpenGL render pipeline, and what better way than by reimplementing it from scratch on the CPU?

FakeGL 1
FakeGL rasterising lines, triangles, interpolating uvs and depth testing
FakeGL 2
FakeGL geometry shading and texturing

On the left is OpenGL on the GPU, on the right is FakeGL on the CPU; uncanny right? To get these results I had to implement rasteriser functions for the point, line and triangle primitives with depth testing, functions for transforming vertex data, textures and lighting using various geometry shading methods (flat, gouraud and blinn-phong).