2013-04-01 35 views
1

我正在使用andengine開發一款針對android平臺的遊戲。 和我用來定期檢查應用程序的內存使用情況。Andengine - 使用TexturePacker Spritesheet增加內存使用量

這是內存使用量使用spritesheets enter image description here

前後來我才知道有關SpriteSheet和Andengine的TexturePackerExtension

我想在我的應用程序使用它。我創建了一張包含整個遊戲需要的所有圖像的spritesheet。

而當我加載它時,我得到的堆比前一個增加。使用SpriteSheet後

enter image description here

我是假設堆會降低。
出了什麼問題?
我應該如何使用SPriteSheet和TexturePackers管理內存。

軟件使用:

  1. CodeANdWeb.com
  2. AndEngine GLES2
  3. Andengine-TexturePackerExtension的TexturePacker。

[編輯] [解決]

總堆並不似乎是一個更大的問題。 我終於設法控制了整個堆內存。

我簡單地創建了2個spritesheets 1用於實際的遊戲資源,另一個用於菜單資源。我只加載當前需要的spritesheet。在加載另一個spritesheet之前,我用來卸載以前的spritesheet等..

我希望這是一個正確的做法。

創建2個spritesheets我的堆內存永不熄滅avobe大約18 MB後:d

enter image description here

回答

1

你總堆容量(可能)暫時更大,因爲spritesheet是有數據的一個大截在發送到OpenGL紋理之前,將其解碼爲堆內存一段非常短的時間。您分配的堆幾乎完全相同!所以沒有任何泄漏或任何東西!

OpenGL紋理不計入您的Java堆。

+0

這是否意味着如果分配的堆幾乎相同,我不必擔心總堆問題?我發現我的遊戲在像三星Galaxy Ace,三星Galaxy Y這樣的設備上崩潰。可能是大堆內存? –

+0

是的,這些設備在便宜的一端,可能有最少的堆。通過使用[PVR(CCZ/GZ)](https://github.com/nicolasgramlich/AndEngine/blob/GLES2-AnchorCenter/src/org/andengine/opengl/texture/compressed/pvr/PVRTexture。JAVA)壓縮的紋理(而不是PNG,這你可能正在使用),您可以使用此[PixelBufferStrategy](https://github.com/nicolasgramlich/AndEngine/blob/GLES2-AnchorCenter/src/org/andengine/opengl /texture/compressed/pvr/pixelbufferstrategy/SmartPVRTexturePixelBufferStrategy.java),它可以限制最大分配加載紋理時。 –

相關問題