2017-03-03 9 views
0

私は現在、風景モードでしか動作しないOpenGLアプリケーション(ゲーム)に取り組んでいます。 Android 6では、アプリケーションを最小化して復元した後、半分の画面がゲームの通常の画面になりますが、ポートレートモードでは画面の残りの半分にいくつかのランダムなガベージがGPUメモリから発生するという問題が発生しました。Android 6のスクリーンアーチファクトを復元した後OpenGLアプリケーション

これを取り除くにはどうすればよいですか?

MainActivityクラスで
AndroidManifestアクティビティで

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

@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); 
    } 
} 
+0

マニフェストを 'android:screenOrientation =" landscape "' – samgak

+0

に変更するのはどうですか?sensor_landscapeの何が問題なのでしょうか? –

+0

いいえ、動作しませんでした... –

答えて

1

さて、私は奇妙なことを見つけました。

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

でも配向明確マニフェスト(sensorLandscapeまたはランドスケープ)で指定され、アンドロイドは、間違った寸法でonSurfaceChanged通知を送信: /復元アプリケーションを一時停止する場合、OSは、3回onSurfaceChanged通知を送信します。 私は、適切な寸法(幅>高さ)でonSurfaceChangedを受け取るまで何も表示しません。完璧ではありませんが、機能します。

関連する問題