2

我正在阅读官方的 Android OpenGL ES 2.0 教程,我注意到了一些东西。本教程中的代码将旋转矩阵乘以视图投影矩阵,如下所示:

Matrix.multiplyMM(mMVPMatrix, 0, mRotationMatrix, 0, mMVPMatrix, 0);

但是,此方法的文档指定结果矩阵和任一操作数不应重叠,或者结果未定义:

将两个 4x4 矩阵相乘并将结果存储在第三个 4x4 矩阵中。在矩阵表示法中:结果 = lhs x rhs。由于矩阵乘法的工作方式,结果矩阵与先乘以 rhs 矩阵,然后乘以 lhs 矩阵的效果相同。这与您可能期望的相反。可以为结果、lhs 和/或 rhs 传递相同的浮点数组。但是,如果结果元素与 lhs 或 rhs 元素重叠,则结果元素值未定义

因此,如果我们使用偏移量,我们可以将结果、lhs 和 rhs 存储在同一个数组中,但它们不应重叠。但是,在本教程的调用中,结果和 rhs 重叠,并且使用了零偏移量。

我读错了什么,还是谷歌的教程错了?

4

0 回答 0