Most OpenGL 3.0+ tutorials I look at multiply the model and view matrices together before sending them to the shader. Sometimes they even multiply the projection matrix together with the other two as well, and have only pass 1 matrix to GLSL. But if I change the view or scale a model, I'm only changing the view or model matrices. Why should I resend the entire MVP matrix every time I change just M, or just V, or just P? What's the reason against using 3 matrix uniforms, and sending to the shader just the matrix you changed, and then carrying out the multiplication in the shader?