我试图使用c ++ glm将4乘3矩阵与3维列向量相乘。
这就是它的样子:
glm::vec3 v3 = ...;
glm::mat4x3 mat = ...;
glm::vec4 result = mat * v3;
VS2012在'*'显示以下错误:
IntelliSense:没有运算符“*”匹配这些操作数
操作数类型是:glm :: mat4x3 * glm :: vec3 ...
编译期间出现了另一个错误:
错误C2679:二进制'*':找不到哪个运算符需要a 'glm :: vec3'类型的右手操作数(或者没有可接受的 转化率)
那么进行这种乘法的正确方法是什么?
我的回答:
好的,所以经过更多实验后我才知道哪里出了问题。基本上,关键是glm定义矩阵的方式与传统方式不同。 glm::mat4x3 mat
实际上会创建一个3乘4的矩阵,包含3行和4列。如果您通过mat[i]
访问它,它将返回第i列而不是第i行。