繁体   English   中英

Android OpenGL视口在所有设备上的水平和垂直视图相同

[英]Android OpenGL Viewport same view on all devices and both horizontal and vertical

我正在寻找设置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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM