This is best for a large list of reasons. A recent Apple presentation on OpenGL enhancements in OSX Lion says this is best: the new OpenGL specs (mostly 3.2 inches) are better aligned with what GPUs do. In OpenGL 2.1, all operations with matrices are performed on the processor. Thus, not only is there no magical accelerated benefit from the use of GL matrices, you are locked into a completely arbitrary matrix control model: only projection matrices and model matrices (for vertices), restrictions on the size of the matrix stack, a limited set of matrix operations, etc.
When you start managing your own matrices, you begin to understand why this is so much better. As your scenes become more complex, you begin to see the need for additional matrix caches (in addition to the "projection" and "model view"). You open up possibilities for creating more useful matrix functions. For example, what sounds more enjoyable to use? glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
or matrix.rotateX(90.0f);
? I was always worried that I had to indicate the axis of rotation every time!
When you begin to recognize the difference between CPU operations and GPU operations, you will understand how to manage your own matrices.
source share