同じ情報が任意の方向の画面に表示されるように OpenGL を設定する適切な方法を探しています。回転するとすべてがつぶれて見えることは理解していますが、同じ情報が表示されます。それを行う方法はありますか?
わかりやすくするために、画面の中央に円がある横向きのタブレットを想像してください。ユーザーがタブレットと高さを回転させると、幅とその逆であるため、円ではなく細長い楕円が表示されます。
OpenGL ES を初期化するときに、画面サイズに基づいて投影行列の比率を設定します。1 に設定すると、画面の比率に関係なく、画像が縦向きと横向きで同じサイズになるように投影行列が変更されます。あなたが必要とするものでなければなりません。
例:
// correct proportion according width to height ratio
public void onSurfaceChanged(GL10 glUnused, int width, int height) {
GLES20.glViewport(0, 0, width, height);
float ratio = (float) width / height;
Matrix.frustumM(mProjMatrix, 0, -ratio, ratio, -1, 1, 2.0f, 250);
}
// disregard screen width/height ratio
public void onSurfaceChanged(GL10 glUnused, int width, int height) {
GLES20.glViewport(0, 0, width, height);
Matrix.frustumM(mProjMatrix, 0, -1, 1, -1, 1, 2.0f, 250);
}