恢复OpenGL应用程序后,在Android 6上进行屏幕伪像



我现在在OpenGL应用程序(游戏)上工作,该应用程序仅在景观模式下工作。在Android 6上,我遇到了一个问题,即在最小化和还原应用程序后,半屏幕变为游戏正常屏幕,但在肖像模式下,在屏幕的另一半上,一些随机垃圾来自GPU内存。

我应该怎么做才能摆脱这种?


在AndroidManifest活动中

android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="sensorLandscape"

在MainActivity类中:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // Checks the orientation of the screen for landscape and portrait and set landscape mode always
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
    }
}

好吧,我发现了奇怪的事情。暂停/还原应用程序时,将OS发送3次的ONSURFACECHANG通知:

onSurfaceChanged(1024,768)
onSurfaceChanged(786,1024) << notice wrong dimensions!
onSurfaceChanged(1024,768)

在清单(Sensorlandscape或Landscape)中清楚地指定了

Android,也以错误的尺寸发送了冲浪的通知。因此,我只是不会渲染任何内容,直到收到有适当尺寸(宽度>高)的效果。并不完美,但可以正常工作。

最新更新