A matrix stack provides a way to apply local transforms to individual objects in our scene while preserving global transforms.
The matrix stack works as each rendering cycle (each call to our render function) requires calculating the scene matrices to react to camera movements. We first update the Model-View matrix for each object in our scene before passing the matrices to the shading program (as attributes). We do this in three steps:
- Once the global Model-View matrix (such as camera transform) has been calculated, we save (push) it onto a stack. This allows us to recover the original matrix once we’ve applied local transforms.
- Calculate an updated Model-View matrix for each object in the scene. This update consists of multiplying the original Model-View matrix by a matrix that represents the rotation, translation, and/or scaling of each object in the scene...