Closed. This question is opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
3年前关闭。
因此,我知道使用Spritesheet比加载单个图像要好得多,但是Spritesheet的最佳实现是什么?
使用许多Spritesheet(例如,在游戏中,每个角色一个,等等),或将所有图像放入一个MEGA Spritesheet中,大小可能为10,000 x 10,000。
两者中哪一个会带来更好的性能?
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
3年前关闭。
因此,我知道使用Spritesheet比加载单个图像要好得多,但是Spritesheet的最佳实现是什么?
使用许多Spritesheet(例如,在游戏中,每个角色一个,等等),或将所有图像放入一个MEGA Spritesheet中,大小可能为10,000 x 10,000。
两者中哪一个会带来更好的性能?
最佳答案
对可能出现在游戏同一部分/级别的任何动画和静态精灵使用精灵表通常是最好的方法。拥有一个巨大的Spritesheet可能会产生稍微更好的性能,但是您很快就会遇到收益递减的规律,这可能会使事情变得更加占用内存。
Spritesheet倾向于通过以下两种方式使事情变得更高效:
它们减少了从磁盘(或通过网络请求)读取图像数据的大量开销。几乎总是在游戏开始之前加载Sprite,因为尝试快速获取所有数据非常糟糕。因此拥有精灵表可能会减少您的加载时间,而拥有一张巨大的精灵表可能会加快加载速度,但这也意味着您将必须加载游戏中的每个精灵-即使您只使用少数几个。这将占用更大的内存,但可能不足以发挥很大的作用。
通过允许简单地翻译已在内存中的图像而不是复制周围的数据,它们可以加快绘画/动画处理,这可能是Spritesheets提供的更为显着的性能优势。通常,这些类型的转换是硬件加速的(尽管这实际上取决于系统体系结构),但是即使没有硬件加速,它的性能也比复制图像数据要好得多。在这里,巨大的Spritesheet可能不会产生太多收益,因为您只需要将动画中存在的帧放在Sprite中即可。
由于拥有庞大的Spritesheet与一些组织良好的Spritesheet相比,仅会带来较小的性能提升,因此,我建议采用最简单的实现。如果一个庞大的Spritesheet难以在您的系统中使用,那么您可能最终会在代码方面做一些笨拙的事情来对其进行管理,这最终会导致相当快的性能提升。但是,如果您的系统能够很好地处理该问题,并且需要翻转某些配置,那么可能值得这样做。
10-04 17:05