OpenGL Programming Guide: The Official Guide to Learning OpenGL, Versions 3.0 and 3.1 - Shreiner; The Khronos Opengl Arb Working Group