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

原文 标签 java android performance libgdx sprite-sheet

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

我有一个 Sprite 表与下面这样的图像相结合:
enter image description here

我希望这些粒子在我的标志周围飞来飞去,所以我需要它们的大小至少为 256px/512px - 所以它在给定的分辨率上看起来不错。

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

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

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

昨天我在 LibGDX 的桌面版本上测试了一切,一切都很好。我在完成菜单后将游戏移植到Android,应该绘制这个spritesheet的区域是黑色 .

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

我想要完成什么?
我需要找到如何使这项工作和加载纹理的想法。

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

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

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

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

最佳答案

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

如果要加载大于 2048*2048 的 spritesheet,则必须单独加载每帧。

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

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

相关文章:

java - 在void main(String [] args)中使用args的简单对称类

java - Java:从扫描仪转换为JOptionPane

android - 如何获取手机屏幕的高度和宽度

android - 在 ImageView 上绘制多个图层

Java 可变 BigInteger 类

c++ - std::pow 不同指数的非常不同的行为

java - Android应用启动可以动态控制或审查吗?

java - JAXB 编码子类继承

android - 如何制作这个交错的GridView?

c++ - 巨大的性能下降 - vector 问题?