【问题标题】:Translation of OpenGL ES 2.0 Shapes in AndroidOpenGL ES 2.0 Shapes 在 Android 中的翻译
【发布时间】:2013-01-06 22:05:40
【问题描述】:

我最近查看了developers.android.com 提供的OpenGL ES 2.0 教程。我成功地完成了它(即使不是很清楚),但后来我遇到了一个问题。完成后,我从未被告知如何平移或缩放对象。我尝试了目前看起来合乎逻辑的不同选项,但它们没有奏效。我对 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 方法,当我尝试替代方法时,我无法使它们工作。我该怎么办?

【问题讨论】:

    标签: java android opengl-es-2.0 transform


    【解决方案1】:

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

    例子:

    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 中阅读更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多