我正在阅读official Android OpenGL ES 2.0 tutorial,我注意到了一些事情。本教程中的代码将旋转矩阵乘以视图投影矩阵,如下所示:
Matrix.multiplyMM(mMVPMatrix, 0, mRotationMatrix, 0, mMVPMatrix, 0);
但是,此方法的文档指定结果矩阵和任一操作数不应重叠,或结果未定义:
将两个4x4矩阵相乘并将结果存储在第三个4x4矩阵中。在矩阵表示法中:result = lhs x rhs。由于矩阵乘法的工作方式,结果矩阵与第一次乘以rhs矩阵具有相同的效果,然后乘以lhs矩阵。这与您的预期相反。可以为结果,lhs和/或rhs传递相同的float数组。但是,如果结果元素与lhs或rhs元素重叠,则结果元素值未定义。
因此,如果我们使用偏移量,我们可以将结果,lhs和rhs存储在同一个数组中,但它们不应重叠。但是,在教程调用中,结果和rhs重叠,并使用零偏移量。
我读错了什么,或谷歌教程错了吗?