I've been reading a book on OpenGL ES 2.0 and I have become accustomed to the general framework of vertex shaders. I understand that every time the view gets redrawn, that the application (client) should update a matrix to and inject it into the shader program and from there the shader program will modify the gl_position output. But I don't quite understand the underlying concept. I took matrix theory in college and have a general understanding of matrix multiplication but I'm not quite understanding what the multiplication is doing in this case. In most cases, I'm seeing the term model view projection matrix being used and I just can't entirely connect the dots. Can anyone give me a straightforward explanation?