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