誰かがGLViewportを理解し、サイズを変更するとどうなるかを理解してくれることを願っています
これは私の混乱を示します。
だから、ここで私は画面の真ん中にクワッドをスタックしています。GLViewportをデバイスの幅と高さに一致させると、最初の(左側の)画像が表示されます。まさに私が期待するもの。
- デバイスの解像度、2560 x 1600
- ビューポート解像度2560 x 1600
- クワッドサイズ200 x 200(注、上の画像は実物大ではありません!!! :-))
- 四角形、正方形として表示
さて、2枚目(右)の写真です...
- デバイスの解像度、2560 x 1600
- ビューポート解像度2560 x 1200(および垂直方向中央)
- クワッドサイズ(200、200)
- 四角形、長方形として表示
私の質問は、四角形が四角形ではなく四角形として表示されているのはなぜですか?私のクワッドが200 x 200ピクセルであることをログに記録して確認しました-物理ピクセルのサイズは確かに同じですか?変更することはできません。ここで何が起こっているのでしょうか?
私は(明らかに間違って)ビューポートを拡大縮小したとき、文字通りピクセルを切り落としたと考えました。
これがどのように機能するかを誰かが説明できれば幸いです。
編集する
現在、私はビューポートを次のように設定しています:
width = (int) Math.min(deviceWidth, deviceHeight * 1.702127659574468);
height = (int) Math.min(deviceHeight, deviceWidth / 1.702127659574468);
ratio = width / height;
GLES20.glViewport(offsetX, offsetY, width, height);
Matrix.orthoM(mProjMatrix, 0, -ratio, ratio, -1, 1, 3, 7);
offsetXとoffsetYは、レターボックスがある場合にビューポートが中央に配置されるようにするためのものです。