c++ - Multiplicando una matriz y un vector en GLM(OpenGL)
glm github (2)
Dado que GLM está diseñado para imitar a GLSL y está diseñado para funcionar con OpenGL, sus matrices son principales en la columna. Y si tienes una matriz de columnas principales, la multiplicas a la izquierda con el vector.
Tal como debería estar haciendo en GLSL (a menos que haya transpuesto la matriz en la carga).
Tengo una matriz de transformación, m
, y un vector, v
. Quiero hacer una transformación lineal en el vector usando la matriz. Espero poder hacer algo como esto:
glm::mat4 m(1.0);
glm::vec4 v(1.0);
glm::vec4 result = v * m;
Sin embargo, esto no parece funcionar. ¿Cuál es la forma correcta de hacer este tipo de operación en GLM?
Editar:
Solo una nota para cualquiera que se encuentre con un problema similar. GLM requiere que todos los operandos usen el mismo tipo. No intentes multiplicar un dvec4
con un mat4
y espera que funcione, necesitas un vec4
.
glm::vec4
se representa como un vector de columna. Por lo tanto, la forma adecuada es:
glm::vec4 result = m * v;
(note el orden de los operandos)