我只知道一种方法,那就是 glm::mat4 矩阵
我甚至尝试过 float matrix[9][3]
但它不能工作,我需要将其与 glm::vec3
相乘
如何创建呢?
你可以通过3x3子矩阵计算并将结果组合成最终结果。有两个选项:
9 rows
a a a u'
a a a u'
a a a u'
b b b u v'
b b b * u = v'
b b b u v'
c c c w'
c c c w'
c c c w'
this is really simple:
u' = a*u
v' = b*u
w' = c*u
9 columns
u
u
u
a a a b b b c c c v u'
a a a b b b c c c * v = u'
a a a b b b c c c v u'
w
w
w
This is more complicated but not by much:
u.x' = (a*u).x + (b*v).x + (c*w).x
u.y' = (a*u).y + (b*v).y + (c*w).y
u.z' = (a*u).z + (b*v).z + (c*w).z
在 GLSL 中,这是扩展维度的常见方式,例如用于以下目的:
typedef glm::mat<9, 3, float, glm::defaultp> mat9x3
,但这实际上像是一个XY问题。对于结果为glm::mat<9,1,...>
,你会怎么处理呢? - undefined