java - 多个小型 spritesheet 还是一个巨大的 spritesheet 以提高性能? ---(java游戏开发)

标签 java performance sprite-sheet

<分区>

所以我知道使用 spritesheet 比加载单个图像要好得多,但是 spritesheet 的最佳实现是什么?

使用许多 spritesheet(例如在游戏中,每个角色一个,等等),或者将所有图像放入一个 MEGA spritesheet,其大小可以说是 10,000 x 10,000。

两者中哪一个会提供更好的性能?

最佳答案

将 spritesheet 用于可能出现在游戏的同一部分/关卡中的任何动画和静态 sprite 通常是最好的方法。拥有一个巨大的 spritesheet 可能 会产生稍微更好的性能,但您很快就会遇到 yield 递减法则,这可能会使事情变得更加占用内存。

Spritesheets 倾向于通过两种方式提高效率:

  • 它们减少了从磁盘(或通过网络请求)读取图像数据的大量开销。

    Sprites 几乎总是在游戏开始前加载,因为试图获取所有数据苍蝇会非常糟糕。因此,拥有 sprite 表可能会减少您的加载时间,而拥有一个巨大的 spritesheet 可能会加快加载速度,但也意味着您将不得不加载游戏中的每个 sprite——即使您只打算使用几个。这将占用更大的内存,但可能不足以产生很大的不同。

  • 它们通过允许对内存中已有的图像进行简单翻译,而不是复制一堆数据来加快绘画/动画的速度。

    这可能是 Sprite 表。通常,这些类型的转换是硬件加速的(尽管这实际上取决于系统架构),但它比四处复制图像数据的性能要高得多,即使没有硬件加速也是如此。在这里,一个巨大的 spritesheet 可能不会产生太多 yield ,因为您只需要动画中存在的帧出现在 sprite 中。

由于拥有一个巨大的 spritesheet 与一些组织良好的 spritesheet 相比,只有很小的性能提升潜力,所以我会推荐最简单的实现。如果一个巨大的 spritesheet 很难在您的系统中使用,您可能最终会在代码中做一些尴尬的事情来管理它,这最终会很快破坏任何性能提升。但是,如果您有一个可以很好地处理它的系统,并且它只是翻转某些配置的问题,那么这可能是值得的。

关于java - 多个小型 spritesheet 还是一个巨大的 spritesheet 以提高性能? ---(java游戏开发),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35930083/

相关文章:

Java用数字初始化一个数组

java - 主程序流

android - 根据时间的昼夜主题

performance - Hibernate 标准与 HQL : which is faster?

javascript - 为什么我的 Sprite 从底部被裁剪?

javascript - easelJS - 使用 Javascript 调整图像大小,然后将其与 SpriteSheet 一起使用

Java:我不明白这个 Sprite 表读取代码的部分意义是什么?

java - 使用 "\t"(选项卡)打印不会导致列对齐

java - 通过带有可 window 口的 ProcessBuilder 触发 cmd.exe 命令

typescript - 维·康瓦。提高用动画渲染多个圆圈的性能