GLSL中的inverse
函数用于计算一个矩阵的逆矩阵。由于逆矩阵并不是所有矩阵都有的,所以在使用inverse
函数前应该确认输入的矩阵是可逆的。
mat4 inverse(mat4 m)
mat3 inverse(mat3 m)
m
:需要逆矩阵的矩阵inverse(mat4 m)
:返回mat4
类型的逆矩阵inverse(mat3 m)
:返回mat3
类型的逆矩阵mat3
类型的矩阵在进行逆矩阵计算时,只计算其前3x3的部分,即它的右下角一定是1。
一个矩阵是否可逆取决于它的行列式是否为0。在使用inverse
函数前需要检查输入矩阵的行列式是否为0,如果是,则不能使用inverse
函数。
mat4 m = mat4(
1.0, 2.0, 3.0, 4.0,
5.0, 6.0, 7.0, 8.0,
9.0, 10.0, 11.0, 12.0,
13.0, 14.0, 15.0, 16.0
);
float det = determinant(m); // 先计算m的行列式
if (det != 0.0) {
mat4 mInv = inverse(m); // 如果m可逆,则计算m的逆矩阵
// 逆矩阵的使用
} else {
// m不可逆,不进行inverse函数的计算
}