c++ glm-math

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)