0

正規化された座標は -1 (左) と +1 (右) と -1 (下) と +1 (上) であることを知っています

このような:

ここに画像の説明を入力

しかし、これを適用した後:

私の onSurfaceChanged メソッドから

GLES20.glViewport(0, 0, width, height);
float ratio = (float) width / height;
Matrix.orthoM(mProjMatrix, 0, -ratio, ratio, -1, 1, 3, 7);

//The above line can be replaced with:
//Matrix.frustumM(mProjMatrix, 0, -ratio, ratio, -1, 1, 3, 7);
//But I get the same results with either frustumM or otrhoM

そして、これは私の onDrawFrame メソッドで

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

(次に、mVMVPMatrix をカスタム クラスの draw メソッドに渡し、そこで回転および変換します)。

しかし、私の座標は変化しているようです - これは大まかに起こることです:

ここに画像の説明を入力

ご覧のとおり、x 座標が若干変更され、-1 と +1 が画面の端ではなくなりました (現在使用しているデバイスでは、外側の端が -1.7 と +1.7 になります)。

Y 座標は変更されません。

誰かが私が間違っているところを指摘していただければ幸いです。あるべきように-1から+1にする必要があります。

ありがとう

4

1 に答える 1

0

私の目には、それは正しいように見えます。画面が正方形でない場合、正方形の画面のように動作するように x 軸を引き伸ばしてもよろしいですか? それを行うと、OpenGL に正方形を描画するように指示すると、画面の幅が よりも広い場合に x 軸の端が y 軸の端よりも大きくなければ、代わりに画面に長方形として表示されます。画像で示唆されているように、画面の高さ。をプロジェクションに渡すのはそのためですratio。これにより、オブジェクトを適切に描画する方法がわかります。

画面上に正四角形を描くとどうなりますか? 正方形または長方形として表示されますか?

于 2013-04-07T02:13:30.390 に答える