Java libgdx:加载资产,内存使用情况
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java libgdx:加载资产,内存使用情况相关的知识,希望对你有一定的参考价值。
我们正在构建java war 2 pc游戏。 (2d,转弯,地图由六边形组成)
我们有记忆问题。
我们的资源约为850mb(图像750,数千个小图像)。这是开发阶段,因此当我们删除一些未使用的数据,压缩等时它会更少。
但是,当我们加载所有这些资源时,我们将花费4GB的RAM。
我们正在使用assetmanger并加载其中的所有内容。
但是,主要问题是地形,因为每种情况都使用几乎所有的地形(海/湖等除外)
TextureAtlases不用于地形。
我想这是一个问题:“被迫拥有一个功率为2(POT)的纹理”。我将尝试使用TextureAtlas解决这个问题。
我们最近在游戏中添加了指挥官。并且看起来他们的肖像(80mb)在加载时消耗700mb的RAM(使用assetManeger [assetManeger.load(“path_name”,Texture.class);]
哪些是这些情况下的最佳实践,何时加载一直使用的东西......
任何建议都会有所帮助。提前致谢。
使用AssetManager而不是直接构造Textures对加载时占用的内存量没有影响。
如果使用PNG或JPG,纹理占用的内存比源图像多得多,因为它们在内存中加载时未压缩。您可以将图像预压缩为ETC1,并且在加载时它们将保持压缩状态(并提高性能),但存在缺点,例如缺少alpha透明度。 Read here.
TextureAtlases将通过减少纹理的总数和这些纹理中的浪费空间来节省一些内存。如果合理使用,它们也可以在性能上有很大的改进。如果您按照经常在地图集的不同纹理页面之间跳转的顺序绘制精灵,则不会有太大的改进。由于您担心总内存使用量,因此您需要对它们进行组织,以便您可以继续卸载舞台未使用的内容。整个Atlas要么加载要么不加载,因此您需要将不同阶段的资产放入单独的地图集中。
以上是关于Java libgdx:加载资产,内存使用情况的主要内容,如果未能解决你的问题,请参考以下文章