我有一个变换矩阵m,和一个向量,v.我想使用矩阵对矢量进行线性变换.我希望我能做到这样的事情:
glm::mat4 m(1.0);
glm::vec4 v(1.0);
glm::vec4 result = v * m;
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.在GLM中进行此类操作的正确方法是什么?
只是给遇到类似问题的人留言.GLM要求所有操作数使用相同的类型.不要试图乘以dvec4与mat4和期望它的工作,你需要一个vec4.
and*_*and 26
glm::vec4表示为列向量.因此,正确的形式是:
glm::vec4 result = m * v;Run Code Online (Sandbox Code Playgroud)
(注意操作数的顺序)
Nic*_*las 10
由于GLM旨在模仿GLSL并且设计用于OpenGL,因此其矩阵是列专业.如果你有一个列主矩阵,你可以用向量乘以它.
就像你应该在GLSL中做的那样(除非你在上传时转换矩阵).