用libgdx绘制大背景图像 - 最佳实践?

dim*_*suz 5 performance android textures opengl-es libgdx

我正在尝试编写一个libgdx livewallpaper(OpenGL ES 2.0),它将显示一个独特的背景图像(不可分割为精灵).

我想定位平板电脑,所以我需要以某种方式能够显示至少1280x800背景图像,其中还会发生更多动作,所以我需要它尽可能快地渲染.

现在我只有关于libgdx和opengl es的基本知识,所以我不知道解决这个问题的最佳方法是什么.

通过谷歌搜索我发现了一些选择:

  • 将纹理分割成较小的纹理.好像GL_MAX_TEXTURE_SIZE大多数设备上都至少为1024×1024,但我并不想打最高,所以也许我可以用512×512,但不会意味着借鉴了很多的瓷砖,每帧=>低性能上重新绑定许多纹理?
  • libgdx有GraphicsTileMaps,它似乎是自动绘制图块的工具.但它也支持我不需要的许多功能(将信息映射到磁贴),也许最好手动拆分?

同样,这里的主要观点是我的表现 - 因为绘画背景预计是最基本的东西,更多的动画将在它之上!

随着平板电脑屏幕尺寸的增长,我很快就会想要能够舒适地渲染更大的图像尺寸:)

任何意见是极大的赞赏!:)

aac*_*neo 3

许多平板电脑(和一些手机)支持 2048 纹理。将其绘制成一件将是最快的选择。如果您仍然需要 100% 确定,只要 GL_MAX_TEXTURE 碰巧较小 (640x400),您就可以将背景分为 2 部分。

“未来”的桌子肯定会支持更大的纹理,所以不用太担心。

对于实际绘图,只需创建一个尽可能使用 VBO 的 libgdx 网格!;)

您没有提到的两件事对性能非常重要。纹理过滤器(如果你不进行像素完美映射,GL_NEAREST是最丑的,但速度最快),纹理格式(RGBA_8888将是最好和最慢的,你可以降级它直到它满足你的需要 - 至少你可以删除 alpha,不是吗?)。

您还可以研究压缩格式,这将大大降低填充率!

我建议你开始编码一些东西,然后调整性能。您遇到的这个特殊问题稍后优化并不难。