OpenGL ES翻译

时间:2013-07-02 08:41:34

标签: android opengl-es opengl-es-2.0

我正在尝试编写一个可以翻译三角形的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轴上移动,它看起来不像是一个翻译

我该怎么办?

2 个答案:

答案 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相乘。