void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { if (transpose) { float param[16]; param[0x0] = value[3]; param[0x1] = value[2]; param[0x2] = value[1]; param[0x3] = value[0]; param[0x4] = value[7]; param[0x5] = value[6]; param[0x6] = value[5]; param[0x7] = value[4]; param[0x8] = value[11]; param[0x9] = value[10]; param[0xa] = value[9]; param[0xb] = value[8]; param[0xc] = value[15]; param[0xd] = value[14]; param[0xe] = value[13]; param[0xf] = value[12]; GPU_SetUniform(location, (u32*) param, 4); } else GPU_SetUniform(location, (u32*) value, 4); }
void setUniformMatrix(u32 startreg, float* m) { float param[16]; param[0x0]=m[3]; //w param[0x1]=m[2]; //z param[0x2]=m[1]; //y param[0x3]=m[0]; //x param[0x4]=m[7]; param[0x5]=m[6]; param[0x6]=m[5]; param[0x7]=m[4]; param[0x8]=m[11]; param[0x9]=m[10]; param[0xa]=m[9]; param[0xb]=m[8]; param[0xc]=m[15]; param[0xd]=m[14]; param[0xe]=m[13]; param[0xf]=m[12]; GPU_SetUniform(startreg, (u32*)param, 4); }