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

原文 标签 java performance sprite-sheet

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

5年前关闭。




Improve this question




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

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

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

最佳答案

对可能出现在游戏的同一部分/关卡中的任何动画和静态 Sprite 使用 Sprite 表通常是最好的方法。拥有一个巨大的 spritesheet 可能会产生稍微好一点的性能,但你很快就会遇到 yield 递减规律,这可能会使内存更加密集。

Spritesheets 倾向于通过以下几种方式提高效率:

  • 它们减少了从磁盘(或通过网络请求)读取图像数据的显着开销。 Sprite 几乎总是在游戏开始之前加载,因为尝试即时获取所有数据会很糟糕。因此,拥有 Sprite 表可能会减少您的加载时间,拥有一个巨大的 Sprite 表可能会加快这一过程,但这也意味着您必须加载游戏中的每个 Sprite ——即使您只打算使用几个。这将有更大的内存占用,但它可能不足以产生很大的不同。
  • 它们通过允许简单转换内存中的图像而不是复制大量数据来加速绘画/动画。这可能是 spritesheets 提供的更显着的性能优势。通常,这些类型的转换是硬件加速的(尽管这实际上取决于系统架构),但即使没有硬件加速,它也比复制图像数据的性能要高得多。在这里,一个巨大的 spritesheet 可能不会产生太大的 yield ,因为您只需要动画中存在的帧才能出现在 sprite 中。

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

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

    相关文章:

    java - 使用注释时无法部署Web服务

    java - 禁用舞台按钮X

    java - 必应翻译api不起作用

    mysql - mysql查询性能问题,同时使用几个REGEXP?

    ios - iOS 中的纹理和动画

    java - 如何使用Pixmap Libgdx碰撞

    mysql - 如何限制由查询用户引起的潜在mysql性能问题?

    python - 为什么创建一个小数组,然后扩展它,而不是完全从一个大列表创建一个数组更有效?

    javascript - 如何从html Canvas 上的tileset工作表多次绘制特定的tileset而不是整个图像

    css - 对HTML5使用Sprite-sheet图片的有效方法