在GLM(OpenGL)中乘以矩阵和向量

时间:2011-09-27 18:43:12

标签: c++ glm-math

我有一个转换矩阵m和一个向量v。我想使用矩阵对矢量进行线性变换。我希望我能做到这样的事情:

glm::mat4 m(1.0);
glm::vec4 v(1.0);

glm::vec4 result = v * m;

但这似乎不起作用。在GLM中进行此类操作的正确方法是什么?

编辑:

只是给遇到类似问题的人留言。 GLM要求所有操作数使用相同的类型。不要尝试将dvec4mat4相乘并期望它可以正常工作,您需要vec4

2 个答案:

答案 0 :(得分:23)

glm::vec4表示为列向量。因此,正确的形式是:

glm::vec4 result = m * v;

(注意操作数的顺序)

答案 1 :(得分:10)

由于GLM旨在模仿GLSL并且设计用于OpenGL,因此其矩阵是列专业。如果你有一个列主矩阵,你可以用向量乘以它。

就像你应该在GLSL中做的那样(除非你在上传时转换矩阵)。