Interactive Computer Graphics: A Top-Down Approach with OpenGL