Modern OpenGL: Its Design and Implementation