我正在寻找设置OpenGL的正确方法,以便在任何方向的任何屏幕上显示相同的信息。我确实理解旋转时所有东西都会被压扁,但会出现相同的信息。有没有办法做到这一点?
为了更清晰,想象一下在屏幕中央有一个圆圈的风景平板电脑。当用户旋转平板电脑和高度因为宽度,反之亦然,而不是看到一个圆圈,他们将看到一个细长的椭圆形。
答案 0 :(得分:0)
初始化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);
}