画面上にテキスト モデル メッシュを配置しようとしています。以下のコードを使用すると、コードが示唆するようにメッシュが描画されます。画面の中央にあるメッシュの左側。しかし、画面の左端に配置したいのですが、ここで行き詰まります。Matrix.translateM の行のコメントを外すと、位置が画面の左側になると思いますが、位置がスケーリングされているようです (!?)
私が試したいくつかのシナリオ:
a.) Matrix.scaleM のみ(Matrix.translateM なし) = メッシュの左側は 0.0f (画面の中心) に配置され、正しいスケールを持ちます。
b.) Matrix.TranslateM のみ(Matrix.scaleM なし) = メッシュの左側が画面の左側に正しく -1.77f 配置されていますが、スケールが正しくありません。
c.) Matrix.TranslateM の次に Matrix.scaleM、またはMatrix.scaleM の次に Matrix.TranslateM =スケールは正しいが、位置が正しくない。位置がスケーリングされており、画面の左側よりも中央に非常に近いようです。
Java での Android Studio プログラミングで OpenGL ES 2.0 を使用しています。
画面境界 (Matrix.orthoM からの設定) 左: -1.77、右: 1.77 (中央は 0.0)、上: -1.0、下: 1.0 (中央は 0.0)
メッシュの高さは 1.0f であるため、Matrix.scaleM がない場合、メッシュは画面全体の高さになります。
float ratio = (float) 1920.0f / 1080.0f;
float scale = 64.0f / 1080.0f; // 64px height to projection matrix
Matrix.setIdentityM(modelMatrix, 0);
Matrix.scaleM(modelMatrix, 0, scale, scale, scale); // these two lines
//Matrix.translateM(modelMatrix, 0, -ratio, 0.0f, 0.0f); // these two lines
Matrix.setIdentityM(mMVPMatrix, 0);
Matrix.orthoM(mMVPMatrix, 0, -ratio, ratio, -1.0f, 1.0f, -1.0f, 1.0f);
Matrix.multiplyMM(mMVPMatrix, 0, mMVPMatrix, 0, modelMatrix, 0);