0

最近看了developers.android.com提供的OpenGL ES 2.0 Tutorial。我成功地完成了它(即使不是很清楚),但后来我遇到了一个问题。完成后,我从未被告知如何平移或缩放对象。我尝试了目前看起来合乎逻辑的不同选项,但它们没有奏效。我对android中的OpenGL ES 2.0不是很熟悉。

Matrix.setLookAtM(mVMatrix, 0, 0, 0, -3, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mVMatrix, 0);

long time = SystemClock.uptimeMillis() % 4000L;
mAngle = 0.090f * ((int) time);
Matrix.setRotateM(mRotationMatrix, 0, mAngle, 0, 0, -1.0f);

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

t.draw(mMVPMatrix);

所有这些矩阵都是大小为 16 的浮点数组。我的问题是,我怎么能用 x 和 y 位置和 sam 进行平移(带有刻度的浮点数)?似乎有 mo setTranslateM 方法,当我尝试替代方法时,我无法使它们工作。我该怎么办?

4

1 回答 1

3

要平移/缩放/旋转您的对象,您应该将这些操作应用于您的模型矩阵。

例子:

Matrix.setIdentityM(mMMatrix, 0); // reset transformations
Matrix.setRotateM(mMMatrix, 0, 0, 1.0f, 0, 0); // set rotation
Matrix.translateM(mMMatrix, 0, 10.0f, 20.0f, 0); // apply translation
Matrix.scaleM(mMMatrix, 0, 0.25f, 0.25f, 0.25f); // apply scale

请注意,Matrix类的某些静态方法会分配内存,因此如果您在每一帧上进行对象转换,您可能不想使用它们。阅读更多关于这里http://groups.google.com/group/android-developers/browse_thread/thread/b30dd2a437cfb076?pli=1和我的博客文章这里http://androidworks-kea.blogspot.com/2012/ 05/developers-notes-about-opengl-es.html

于 2013-01-08T08:44:19.780 回答