Learning opengl 3+ by making a graphics engine