0

最近、developers.android.comが提供するOpenGLES2.0チュートリアルを見ました。私はそれを無事に終えましたが(それがあまり明確でなくても)、それから私は問題にぶつかりました。一度それを終えると、オブジェクトを変換またはスケーリングする方法を教えられませんでした。現時点では論理的と思われるさまざまなオプションを試しましたが、機能しませんでした。私はAndroidのOpenGLES2.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のfloat配列です。私の質問は、スケールの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 に答える