【问题标题】:Andengine - Memory Usage Increase on using TexturePacker SpritesheetAndengine - 使用 TexturePacker Spritesheet 时内存使用量增加
【发布时间】:2013-03-22 16:12:48
【问题描述】:

我正在使用andengine 为Android 平台开发游戏。 我曾经定期检查应用程序的内存使用情况。

这是使用精灵表之前的内存使用情况

后来我知道了 SpriteSheet 和 Andengine 的 TexturePackerExtension

我尝试在我的应用中使用它。我创建了一个精灵表,其中包含整个游戏所需的所有图像。

当我加载它时,我的堆比前一个增加了。

我假设使用 SpriteSheet 后堆会减少。
出了什么问题?
我应该如何使用 SPriteSheet 和 TexturePackers 来管理内存。

使用的软件:

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

[编辑] [已解决]

总堆似乎不是一个更大的问题。 我终于设法控制了总堆内存。

我简单地创建了 2 个精灵表,其中 1 个用于实际游戏资源,另一个用于菜单资源。我只加载当前需要的精灵表。在加载另一个 spritesheet 之前,我曾经卸载以前的 spritesheet 等等..

我希望这是一个正确的方法。

创建 2 个 spritesheets 后,我的堆内存永远不会超过 18 mb :D

【问题讨论】:

    标签: android andengine game-engine texturepacker


    【解决方案1】:

    您的总堆容量(可能)暂时较大,因为 spritesheet 是一大块数据,必须在很短的时间内将其解码到堆内存中,然后才能发送到 OpenGL 纹理。您分配的堆几乎相同!所以这里没有泄漏或任何东西!

    OpenGL 纹理不计入您的 Java 堆。

    【讨论】:

    • 如果分配的堆几乎相同,这是否意味着我不必担心总堆?我发现我的游戏在 Samsung Galaxy Ace、Samsung Galaxy Y 等设备上崩溃。可能是因为堆内存过大?
    • 是的,这些设备价格便宜,而且最大堆可能更少。通过使用PVR(CCZ/GZ) 压缩纹理(而不是您当前可能使用的PNG),您可以使用此PixelBufferStrategy,它允许您在加载纹理时限制最大分配。
    猜你喜欢
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    • 2012-01-24
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    相关资源
    最近更新 更多