2

公式のAndroidOpenGLES 2.0チュートリアルを読んでいて、何かに気づきました。チュートリアルのコードは、次のように回転行列をビュー投影行列に乗算します。

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

ただし、このメソッドのドキュメントでは、結果の行列が指定されており、いずれかのオペランドが重複していないか、結果が未定義です。

2つの4x4行列を乗算し、その結果を3番目の4x4行列に格納します。行列表記の場合:結果= lhsxrhs。行列の乗算の仕組みにより、結果の行列は、最初にrhs行列を乗算し、次にlhs行列を乗算するのと同じ効果があります。これはあなたが期待するものの反対です。同じfloat配列を、result、lhs、および/またはrhsに渡すことができます。ただし、結果要素がlhs要素またはrhs要素のいずれかと重複する場合、結果要素の値は未定義です

したがって、オフセットを使用する場合、結果、lhs、およびrhsを同じ配列に格納できますが、これらは重複しないようにする必要があります。ただし、チュートリアルからの呼び出しでは、結果とrhsがオーバーラップし、ゼロのオフセットが使用されます。

私は何か間違ったものを読んでいますか、それともグーグルのチュートリアルは間違っていますか?

4

0 に答える 0