android - 在 AndEngine 中加载大纹理

标签 android textures andengine

在我们正在开发的游戏中,我们需要为一个大小为 485x485 的大型 Sprite 制作动画,该动画大约有 30 帧。我们在制作此类 Artifact 的动画时遇到了问题。我已经尝试了下面列出的一些解决方案,但不幸的是我们还没有找到解决方案。

平铺

看起来将每一帧都放在一个大图 block 中不是一种选择,因为:

  • 纹理大小需要是2的幂,所以在大多数设备上显示为黑色
  • 当我将纹理大小设置为 2 的幂时,对于大多数设备来说它变得太大了无法处理
  • AndEngine 建议的最大纹理大小 seems to be 1024x1024 .

单独的 Sprite

另一个选项是分别加载每个纹理,从而加载每个帧,并将其放入 Sprite(如 described here )。这非常有效,并且在正确的时间切换每个 Sprite 的可见性会使用户看到动画。

此方法的问题是加载整个动画需要相当长的时间。由于加载屏幕,最初加载游戏时这是不可见的,但在游戏后期需要更改动画,然后游戏需要大约 2-3 秒才能加载。放置加载屏幕不是一种选择。

在单独的线程上加载

我试图将纹理加载到一个单独的、新创建的线程中,但即使在线程加载纹理时,游戏的绘制似乎也暂停了。

其他选择?

我不知道有什么选择,而且似乎没有其他人尝试为大于 50x50 像素的纹理设置动画,因为很难找到有类似情况的人。

我的问题是:是否可以在 AndEngine 中为大型纹理制作动画?

最佳答案

我认为您的问题将遇到设备限制,而不是引擎限制。为移动设备设计,很少有安卓设备可以运行它。

但是,您可以使用 VertexShaders 和 FramentShaders 提出替代解决方案。这是Andengine GLES2的一个重要特性

这是一篇描述该方法的文章: http://code.zynga.com/2011/11/mesh-compression-in-dream-zoo/

关于android - 在 AndEngine 中加载大纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12680133/

相关文章:

java - 如何仅在 Android Wear 设备上显示通知

c++ - 圆柱体上的纹理映射

android - 从 Intent 调用 SimpleBaseGameActivity

android - 错误 : Unable to resolve dependency for ':app@releaseUnitTest/compileClasspath' : Could not resolve com. squareup.retrofit2 :retrofit:2. 3.0

java - 从字符串中删除项目

opengl-es - LibGDX重复TextureRegion

opengl - 如何在openGL中使用textureID获取纹理数据

带有 AndEngine 的 Java 哈希表

android - AndEngine MenuScene - 无法点击按钮

java - RxJava - 带有 concatWith 和 map 的可观察链