java - Libgdx - 如何加载一个巨大的 Sprite 表,使其不呈现黑色?

标签 java android performance libgdx sprite-sheet

我在 LibGDX 中编写的手机游戏面临性能问题。 我们假设只有一种分辨率 - 1920x1080 - 仅用于测试。

我有一个包含如下图像的 Sprite 表: enter image description here

我希望这些粒子围绕我的 Logo 飞行,因此我需要它们的大小至少为 256px/512px - 这样在给定的分辨率下看起来不错。

如果一帧具有该大小,并且我需要至少 32 帧才能使其看起来不错,则很容易计算出整个 spritesheet 的尺寸:

width: 256 * 8 (columns) = 2048
height: 512 * 4 (rows) = 2048

这是最乐观的想法,因为 spritesheet 应该更大。 spritesheet 的重量约为 50kb,所以它确实很好,但尺寸给我带来了麻烦。

昨天我在 LibGDX 的桌面版本上测试了所有内容,一切都渲染得很好。我在完成菜单后将游戏移植到Android,并且该 Sprite 表应绘制的区域是黑色

我在 gamedev 或这里(不记得了)上读到,我应该只使用最大尺寸为 od 1024/1024 的图形,因为 LibGdx 在许多版本上使用 Android 加载更高纹理时存在一些问题.

我想要实现什么目标? 我需要找到一个想法如何使其工作并加载纹理。

我已经尝试使用像素图调整文件大小,但它需要整数作为尺寸,它会降低质量等...

我知道有人会说,为什么不像下面这样创建一个带有橙色图形的“点”对象,随机生成这些点并有时更改它们的 Alpha?这不是一个选项,因为我需要其他动画,如“雾”,它不能像点那样简单地编程。

也许有一种方法可以调整纹理、区域或其他东西的大小(当然使用 float 来保持纵横比)?

如果有人有任何想法,我应该如何在我的应用程序中使用巨大的 Sprite 表,我将非常感激:)

最佳答案

您的 Sprite 表的长度不应超过 2048*2048。

如果你想加载超过2048*2048的 Sprite 表,那么你必须单独加载每一帧。

假设,如果您的 Sprite 表包含 15 个帧,那么您必须有 15 个单独的 png 文件。

关于java - Libgdx - 如何加载一个巨大的 Sprite 表,使其不呈现黑色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38670881/

相关文章:

Java Jersey 链接头解析错误

android - Cordova 应用程序已在 Android 模拟器中停止问题

android - 如何告诉我自己的自定义 Spinner Layout 使用我的主题?

java - 在 Java 中用流 api 替换多个 FOR 循环的最佳方法

java - 使用 fxml 文件和 Controller 在 Java fx 中的场景之间切换

java - Sugarcrm - 通过 REST 的 session ID 无效 - 帖子太大?

java - 如何将 "\,,/"显示为字符串

android - 从连接到 Linux 的 Android 手机发送短信

c++ - 为什么 GTX Titan 上的 cublas 比单线程 CPU 代码慢?

javascript - 在 JS 中避免没有最终表达式的 FOR 循环是否有充分的理由?