uniformMatrix4fv method
be careful, data always has a length that is a multiple of 16
Implementation
void uniformMatrix4fv(UniformLocation location, bool transpose, List<double> values) {
  startCheck('uniformMatrix4fv');
  var arrayPointer = _floatListToArrayPointer(values);
  gl.glUniformMatrix4fv(location.id, values.length ~/ 16, transpose ? 1 : 0, arrayPointer);
  checkError('uniformMatrix4fv');
  calloc.free(arrayPointer);
}