Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个变换矩阵m和一个向量v。我想使用矩阵对向量进行线性变换。我希望我能够做这样的事情:
m
v
glm::mat4 m(1.0); glm::vec4 v(1.0); glm::vec4 result = v * m;
不过,这似乎不起作用。在 GLM 中进行这种操作的正确方法是什么?
只是给遇到类似问题的任何人的说明。GLM 要求所有操作数使用相同的类型。不要尝试将 advec4与 a相乘mat4并期望它起作用,您需要 a vec4。
dvec4
mat4
vec4
glm::vec4表示为列向量。因此,正确的形式是:
glm::vec4
glm::vec4 result = m * v;
(注意操作数的顺序)
由于 GLM 旨在模仿 GLSL 并且旨在与 OpenGL 一起使用,因此它的矩阵是列优先的。如果你有一个以列为主的矩阵,你将它与向量左乘。
就像您在 GLSL 中应该做的那样(除非您在上传时转置矩阵)。