This comment in a tutorial caught my attention ...

I'm still learning, but the only OpenGL function I've seen so far that applies to all matrices is glLoadIdentity. Instead of requiring code to specify a "current" matrix the architects of OpenGL could have created 2 functions - glLoadModelingIdentity and glLoadProjectionIdentity (well, 4 functions actually as there are 4 matrix types)

It made me wonder if there's a more general argument why a "current" matrix must be specified? If all (or at least almost all) functions apply only to a given matrix type, then specifying a "current" matrix seems unnecessary.

Perhaps there are other functions I've just not seen that also can apply to more than one matrix?

Perhaps the architects just thought it would help maintain code if it could be segmented by statements applying to similar matrices?

Perhaps the architects thought it would help programmers put the functions in the right order?

Has anyone read anything that addresses my question?

...a few lines later glMatrixMode() is called again, this time with GL_MODELVIEW as the argument. This indicates that succeeding transformations now affect the modelview matrix instead of the projection matrix.

It made me wonder if there's a more general argument why a "current" matrix must be specified? If all (or at least almost all) functions apply only to a given matrix type, then specifying a "current" matrix seems unnecessary.

Perhaps there are other functions I've just not seen that also can apply to more than one matrix?

Perhaps the architects just thought it would help maintain code if it could be segmented by statements applying to similar matrices?

Perhaps the architects thought it would help programmers put the functions in the right order?

Has anyone read anything that addresses my question?

## Comment