【发布时间】:2016-05-23 08:51:03
【问题描述】:
我有一个游戏,它在启动时会创建所有需要的对象(所以大约 600 个相同纹理的精灵、1 个玩家纹理和大约 100 个相同纹理的精灵)。所以只需要3个纹理。
这些纹理当前位于各自的 .png 文件中。
我是否应该将这 3 个打包成纹理图集。因为我重用了一个精灵,比如 60000 次,而另一个精灵只重用了 1 次。会不会慢一些?
【问题讨论】:
我有一个游戏,它在启动时会创建所有需要的对象(所以大约 600 个相同纹理的精灵、1 个玩家纹理和大约 100 个相同纹理的精灵)。所以只需要3个纹理。
这些纹理当前位于各自的 .png 文件中。
我是否应该将这 3 个打包成纹理图集。因为我重用了一个精灵,比如 60000 次,而另一个精灵只重用了 1 次。会不会慢一些?
【问题讨论】:
TextureAtlas 不是关于重用资产 - 它是关于文件访问性能的改进。当您拥有 3 个 .png 文件时,引擎需要分别加载它们,这意味着它需要定义 FileHandler 三次,调用内存三次等等。使用 TextureAtlas,您只需从内存中加载一次图形,这绝对是更高效的。
关于为什么要使用 TextureAtlas 的第二件事是纹理也只加载到 GPU 一次,如果您要使用单独的纹理,则需要一个一个地加载它们。
所以答案是 - 是的,您应该使用 TextureAtlas 但是由于您的要求,它不会有所作为。如果您使用相同的纹理,渲染 1、2 或 1000 个相同的精灵并不重要 - 无论您是否使用 TextureAtlas,性能都是相同的。
在此步骤中,您还应该阅读AssetManager 以了解如何处理 LibGDX 中的资产
【讨论】: