自分の行列/ベクトル演算からGLMに移行しましたが、1つ理解できません。
OpenGLのモデル行列 --model_matrix=scale_matrix * rotate_matrix * translate_matrixなので、最初に変換してから回転し、最後にスケールします。しかし、GLMでそうしようとすると、乗算の逆順(平行移動*回転*スケール)を使用した場合にのみ正しい場所にクワッドが表示されますが、MVP行列(投影*ビュー*モデル)では正常に機能します。
サンプルコード
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));
...
バーテックスシェーダー
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);
}