Original Author: Jeff Molofee (NeHe) http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=02
C# Implementation: Randy Ridge http://www.taoframework.com