http://cmgresearch.blogspot.com/2010/09/nehe-opengl-tutorial-2-3-and-4-ported.html