J'ai une matrice de transformation, m
et un vecteur, v
. Je veux faire une transformation linéaire sur le vecteur en utilisant la matrice. Je m'attendrais à ce que je puisse faire quelque chose comme ça:
glm::mat4 m(1.0);
glm::vec4 v(1.0);
glm::vec4 result = v * m;
Cela ne semble pas fonctionner, cependant. Quelle est la bonne façon de faire ce genre d'opération dans GLM?
Juste une note à quiconque rencontre un problème similaire. GLM nécessite que tous les opérandes utilisent le même type. N'essayez pas de multiplier un dvec4
avec un mat4
Et attendez-vous à ce que cela fonctionne, vous avez besoin d'un vec4
.
glm::vec4
est représenté comme un vecteur de colonne. Par conséquent, la forme appropriée est la suivante:
glm::vec4 result = m * v;
(Notez l'ordre des opérandes)
Comme GLM est conçu pour Mimic GLSL et est conçu pour fonctionner avec OpenGL, ses matrices sont majeures. Et si vous avez une matrice majeure de colonne, vous avez quitté la multiplication avec le vecteur.
Tout comme vous devriez faire dans GLSL (sauf si vous avez transposé la matrice sur le téléchargement).