也许我只是在文档中遗漏了一些东西,但似乎 GLM 不可能进行 vector 的转置。我也看不到 mat3x1 或 mat1x3 类型。 glm::transpose 也不适用于 vector 。我是否遗漏了什么,或者这只是 GLM 中缺少的功能?
最佳答案
GLM 基于 GLSL,其中根本不需要转置 vector 。如果你做 vector/矩阵乘法,它会以适合矩阵大小的方式乘以 vector (除非它必须改变乘法的顺序)。因此,如果您有一个 mat4
并执行 mat4*vec4
,您的 vec4
将被视为列 vector 。如果你执行 vec4*mat4
,它被认为是一个行 vector 。如果你执行 mat2x4*vec4
,你会得到一个错误,而 vec4*mat2x4
工作(作为行 vector )。
所以一般来说,没有理由需要“转置”一个 vector 。系统只会做任何有效的事情。
关于c++ - GLM : How to transpose a vector?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9863875/