According to GLSL specifications ( page 23 "The attribute qualifier can be used only with float, floating-point vectors, and matrices" but the glVertexAttribPointer specification ( states that the maximum value that the "size" parameter can get is 4, meanwhile we would need 16 to fill up a whole mat4. Am I missing something? How can I use a vertex attribute of type mat4?