android opengl的显示尺寸不正确

时间:2016-10-13 14:37:12

标签: android opengl-es

我使用DisplayMetrics获取Android手机的显示尺寸如下:

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = dm.heightPixels;

结果给我身高= 854,宽度= 480。

当我希望视口覆盖整个屏幕时,视口不会覆盖整个显示。

GLES20.glViewport(0,0,480,854);

Screenshot

有任何解释吗?

2 个答案:

答案 0 :(得分:0)

onSurfaceChanged获取屏幕宽度和高度可能是一个更好的主意,因为它需要考虑方向(并在更改时调用)。 这意味着什么并不涵盖整个展示?如果是状态栏和导航栏,那么"采取"屏幕空间,然后你可以hide

    View decorView = getWindow().getDecorView();
    int uiOptions = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
                    View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
                    View.SYSTEM_UI_FLAG_FULLSCREEN;
    decorView.setSystemUiVisibility(uiOptions);

答案 1 :(得分:0)

看起来四边形并不覆盖整个屏幕。 OpenGL屏幕坐标在两个轴上的范围从-1到1。如果不使用投影矩阵,请确保四边形的宽度和高度为2。如果您正在使用投影矩阵,请调整投影矩阵参数以在整个屏幕上投影四边形或缩放四边形以使屏幕与当前投影矩阵一致。