Here is my understanding of it.

PushMatrix creates a new matrix with the current matrix’s state. PopMatrix will pop off the matrix and return you to the original state before you pushed. Loadidentity just changes the current matrix to the identity matrix. ( I guess that means 1’s in a diagonal and the rest zeroes in the matrix ) So, it just clears everything out.

So, if your keeping some sort of initial state in your matrix then calling load identity would erase it. Now if you wanted to keep that initial state then you could push…do stuff…pop and that would preserve the initial state. Otherwise, I guess you could call loadidentity if you were not keeping track of a state.

e.g.

//matrix A

PushMatrix();

//copy of matrix A

do stuff…

//matrix A is now altered…

glLoadIdentity()

//you cleared out altered matrix A to identity

PopMatrix();

//matrix A is restored to state before push

Or if you did not care about matrix A then

glLoadIdentiy();

do stuff…

Hmmm I bet glLoadIdentity might be faster because your not doing a push/pop but if you have to create some initial state each time then it could make it slower I suppose.