Unable to pass custom Matrix4 to GLSL as a uniform
glUniformMatrix4fv(transformLocation, sizeof(transform), GL_FALSE, &amp;transform.m[0][0]);



The second parameter to glUniformMatrix is not the number of bytes in the data. OpenGL can figure that out from the 4fv part of the command (a 4x4 matrix of GLfloats). The second parameter is the number of matrices you're sending to that uniform, in case it is an array of mat4s.

So that value ought to be 1. You almost certainly got a GL_INVALID_OPERATION error from calling it with sizeof(transform).