Interactive Computer Graphics: A Top-Down Approach with OpenGL (2nd Edition)