我想知道我该怎么办?因为目前我使用BitmapTextureAtlas.unload()
,但这并没有从OpenGL上下文中删除/清除数据。我知道这是因为在我卸载游戏中的每一个纹理之后。然后暂停并恢复应用程序,当OpenGL重新创建Context时需要一些时间。
所以我的结论是OpenGL Context仍然包含这些数据。
我的代码
@Override
public synchronized void onPauseGame() {
super.onPauseGame();
if (gameIsLoaded) {
Log.i("textureManager",""+getTextureManager().getTexturesLoadedCount());
Log.i("textureManager",""+getTextureManager().getTextureMemoryUsed());
atlasNumbers.unload();
atlasIcon.unload();
atlasHexagonBackground.unload();
atlasCorner.unload();
atlasCloud.unload();
// there is a lot more of unload
Log.i("textureManager",""+getTextureManager().getTexturesLoadedCount());
Log.i("textureManager",""+getTextureManager().getTextureMemoryUsed());
wasPaused = true;
}
}
输出
I/textureManager﹕ 130
I/textureManager﹕ 79834
I/textureManager﹕ 130
I/textureManager﹕ 79834
我发现BitmapTextureAtlas.unload()
只设置了标志,实际的卸载将在下一个onUpdate tick上执行。有没有卸载纹理,然后执行应用程序暂停?
答案 0 :(得分:0)
您可以编写自己的bitmaptextureatlas,它会覆盖卸载方法并立即调用它,而不仅仅是在updatehandler的下一个刻度上