title: How to send my model matrix only once per model to shaders
body: <p>For reference, I'm following this <a href="http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/" rel="nofollow noreferrer">tutorial</a>. Now suppose I have a little application with multiple types of model, if I understand correctly I have to send my MPV matrix from the CPU to the GPU (in other words to my vertex shader) for each model, because each model <em>might</em> have a different model matrix from one to another. </p>
  
  <p>Now looking at the tutorial and <a href="https://stackoverflow.com/questions/9503866/how-do-i-display-2-or-more-objects-in-opengl-model-view-projection-matrices">this post</a>, I understand that the call to send the matrix to my shader (<code>glUniformMatrix4fv(myMatrixID, 1, GL_FALSE, &amp;myModelMVP[0][0])</code>) <strong>should be done for each frame and for each model</strong> since each time it overwrites the previous value of my MVP (the one for my last model). But, being concerned about the performance of my app, I don't want to send useless data through the bus and if I understand correctly, my model matrix is <em>constant</em> for each model.</p>
  
  <p>I'm thinking about having an uniform for each model's MVP matrix, but I think it is not scalable and I would also have to update all of them if my view or projection matrices changed... Is there a way to avoid sending multiple times my model matrices and only send my view and projection matrices upon change?</p>