0

我正在寻找设置 OpenGL 的正确方法,以便将相同的信息显示在任何面向任何方式的屏幕上。我确实知道旋转时一切都会被压扁,但会出现相同的信息。有没有办法做到这一点?

为了更清楚起见,想象一个横向平板电脑,屏幕中央有一个圆圈。当用户旋转平板电脑和高度时,因为宽度和反之亦然,而不是看到一个圆圈,他们将看到一个拉长的椭圆形。

4

1 回答 1

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);
}
于 2013-07-10T07:26:09.677 回答