Opengl(r) Programming Guide by Dave Shreiner & Graham Sellers