Why must the transpose value of glUniformMatrix4fv in webgl/OpenGL ES be false?
The OpenGL ES spec says that the transpose value must be false or an INVALID_VALUE is generated. Why then have the parameter?
The parameter exists because the OpenGL ES spec conforms to the OpenGL spec : OpenGL ES 2.0 is defined relative to the OpenGL 2.0 specification
In the OpenGL spec, this parameter exists hence it also exists in the OpenGL ES spec, even if it is unused.
Because OES is a subset of standard OpenGL, and the functions must have the same parameters in both implementations. In OpenGL the parameter transpose is used to specify if the matrix is in row-major or column-major order, but since OES only supports column-major, it must be always false.