I experimented by writing a game engine / framework from the ground up using C++ and OpenGL. It is by no means complete, but it provides basic functionality like loading 2d and 3d objects. I acquired all of the computer graphics knowledge through the internet, very interesting! I even created the models myself in Blender.