我正在尝试编写一个可以翻译三角形的Android应用程序 来自Google的http://developer.android.com/training/graphics/opengl/motion.html代码,但是当我更换
时Matrix.setRotateM(mRotationMatrix, 0, mAngle, 0, 0, -1.0f);
Matrix.multiplyMM(mMVPMatrix, 0, mRotationMatrix, 0, mMVPMatrix, 0);
带
Matrix.translate(mMVPMatrix,0,dx,dy,0);
三角形也在Z轴上移动,它看起来不像是一个翻译
我该怎么办?
答案 0 :(得分:3)
以下代码:
Matrix.setRotateM(mRotationMatrix, 0, mAngle, 0, 0, -1.0f);
Matrix.multiplyMM(mMVPMatrix, 0, mRotationMatrix, 0, mMVPMatrix, 0);
表示:
mRotationMatrix <-- Create a rotation matrix of mAngle degrees around axis -Z
mMVPMatrix <-- The product of mRotationMatrix and mMVPMatrix
以下内容:
Matrix.translate(mMVPMatrix,0,dx,dy,0);
表示:
mMVPMatrix <-- Translate mMVPMatrix of dx along X axis and dy along Y axis
我认为mMVPMatrix是一个透视投影(而MVP的P通常表明这一点)。通常你不翻译已经投射过的东西。请尝试以下方法:
Matrix.setIdentityM(mTranslationMatrix, 0);
Matrix.translateM(mTranslationMatrix, 0, dx, dy, 0);
Matrix.multiplyMM(mMVPMatrix, 0, mTranslationMatrix, 0, mMVPMatrix, 0);
答案 1 :(得分:1)
我不认为你想翻译你的MVP矩阵,你想创建一个单位矩阵,翻译它,然后将它与mMVPMatrix
相乘。