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