Opengl Programming Guide by Dave Shreiner & Opengl Architecture Review Board