Modèle de matrice dans les GLM

- Je migrer de mon propre matrice/vecteur des opérations de GLM et je ne comprends pas une chose.

Un modèle de matrice en OpenGL - model_matrix = scale_matrix * rotate_matrix * translate_matrix, nous avons d'abord traduire puis tourner et à la dernière échelle.
Mais ensuite, j'essaie de le faire dans GLM il montre quad au bon endroit seulement si j'utilise l'ordre inverse de la multiplication (traduire * rotation * à l'échelle), mais fonctionne comme il se doit pour le MVP de la matrice (projection * vue * modèle).

Exemple de code

using namespace glm;
mat4 projection = ortho(0.0f, 1.0f, 0.0f, 1.0f);
mat4 translate = translate(mat4(1.0f), vec3(0.5f, 0.5f, 0.0f));
mat4 rotate = rotate(mat4(1.0f), 90.0f, vec3(0.0f, 0.0f, 1.0f));
mat4 scale = scale(mat4(1.0f), vec3(0.5f, 0.5f, 1.0f));
mat4 m = translate * scale * rotate;//must be scale * rotate * translate
mat4 mvp = projection * mat4(1.0f)/*view matrix*/ * m;
glUseProgram(shader->prog);
glUniformMatrix4fv(shader->uniforms[0]/*um_mvp*/, 1, GL_FALSE, value_ptr(mvp));
...

Vertex shader

attribute vec3 av_pos;
attribute vec2 av_tex;

uniform mat4 um_mvp;

varying vec2 vv_tex;

void main()
{
 vv_tex = av_tex;
 gl_Position = um_mvp * vec4(av_pos, 1.0); 
} 
"Un modèle de matrice en OpenGL - model_matrix = scale_matrix * rotate_matrix * translate_matrix" selon qui? Êtes-vous parler de ce que la glRotate/Échelle/Traduire fonctions? Ou êtes-vous parler d'autre chose?
Bien est-il pas? Si nous translateX(5) * scaleX(2.0) nous avons échelle coords système x à 2.0 puis passer à 10 au lieu de 5 unités à cause de cela, si nous scaleX(2.0) * translateX(5) puis nous passons à 5 unités, alors échelle coords système, l'ordre des questions, non?

OriginalL'auteur Aristarhys | 2012-10-11