アンドロイドでテクスチャが破壊されたときはどうすれば検出できますか? 私GLSurfaceViewのための私のレンダラクラスは、現在、次のようになります。テクスチャが破壊されたときを検出する方法
public void onDrawFrame(GL10 gl)
{
nativeLibrary.drawFrame();
}
public void onSurfaceChanged(GL10 gl, int width, int height)
{
if (reload)
{
library.glRecreate(); //this method reloads destroyed textures
}
else
{
nativeLibrary.init(width, height)); //this method initializes my game
reload = true;
}
}
public void onSurfaceCreated(GL10 gl, EGLConfig config)
{
}
問題は、それが常に動作しませんです。ゲームのホームボタンを押してからもう一度やり直すと、それは魅力のように機能します。しかし、私はデバイスをロックし、再びそれをロック解除すると、すべてのテクスチャは黒だけです。ロックするとすべてがリセットされているように見えます(私のゲームは常にメインメニューに戻ります)。ホームボタンを使用してゲームを終了し、その後にロック/アンロックを行うと、ゲームはリセットされません。 Android上でOpenGLを行う場合
多分重要な詳細です。それから、私はGLSurfaceViewを手動で作成しました。今はxmlを通して読み込みます。 – Brammie
また、手動で作成することに戻った場合は、再度動作しますか?すべてではないにしてもほとんどの例は、GLSurfaceViewをコードで作成します。私は実際にXMLから一度それを作成しようとしたと思います。失敗した理由を思い出さないでください。 – Thomas
問題はどこかにありました。画面をロックすると、画面の向きが元に戻って戻ります。これは実際に(onDestroyが呼ばれるように)アプリケーションを殺すが、何とかアンドロイドがそれを覚えていない、そして画面のロックを解除するときにただonResume私のゲーム。 System.exit(0)を呼び出すとき。 onDestroyでは、ロックを解除するとゲームが終了しました。 – Brammie