AndEngine GLES 2 - Defenetly从OpenGL Context卸载/删除BitmapTextureAtlas

时间:2014-05-14 12:45:48

标签: java android opengl-es andengine

我想知道我该怎么办?因为目前我使用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上执行。有没有卸载纹理,然后执行应用程序暂停?

1 个答案:

答案 0 :(得分:0)

您可以编写自己的bitmaptextureatlas,它会覆盖卸载方法并立即调用它,而不仅仅是在updatehandler的下一个刻度上