P and P’ are vectors containing x,y,z,w coordinates (4 elements in C array). And M is a 4x4 matrix (16 elements in C array).

M does not store any information about the point. M only transforms a point P to P’.

glLoadIdentity specifies the Matrix M, not the point P or P’.

So Say you have the code

```
glMatrixMode(GL_MODELVIEW);
glLoadIdentity(); // MV = Identity 4x4 matrix
glTranslate(...); // MV = I*T (T is 4x4 matrix)
glRotate(...); // MV = I*T*R (R is 4x4 MAtrix)
glScale(...); // MV = I*T*R*S (S is 4x4 matrix)
glMultMatrixf(Q); // MV = I*T*R*S*Q (Q is genral 4x4 matrix)
// Notice nowhere has a point been transformed yet
// to do that openGL must draw a set of vertices ie
glVertex4f(x,y,z,w); // P'=MV*P where P=(x,y,z,w)
// and MV has not changed by calling glVertex
// hence MV does not store any info about either P or P'
```

In other words you can only get the transformed point P’=(x’,y’,z’,w’) knowing both the MOVDELVIEW matrix (MV) AND the original vector/point P.

The inverse operation also requires two pieces of information the inverse(MV) matrix AND the final transformed vector/point P’ to determine the original point P. The problem is ill-defined if you only know just the matrix and not P’ ie it is impossible to know the original point if you only know the matrix M alone.