How are coordinates transformed? What are the different coordinate spaces?
Object Coordinates are transformed by the ModelView matrix to produce Eye Coordinates. Eye Coordinates are transformed by the Projection matrix to produce Clip Coordinates. Clip Coordinate X, Y, and Z are divided by Clip Coordinate W to produce Normalized Device Coordinates. Normalized Device Coordinates are scaled and translated by the viewport parameters to produce Window Coordinates. Object coordinates are the raw coordinates you submit to OpenGL with a call to glVertex*() or glVertexPointer(). They represent the coordinates of your object or other geometry you want to render. Many programmers use a World Coordinate system. Objects are often modeled in one coordinate system, then scaled, translated, and rotated into the world you’re constructing. World Coordinates result from transforming Object Coordinates by the modelling transforms stored in the ModelView matrix. However, OpenGL has no concept of World Coordinates. World Coordinates are purely an application construct. Eye Coordi