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

时间:2012-12-30 11:06:11

标签: android performance opengl-es textures libgdx

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

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

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

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

  • 将纹理分割为更小的纹理。似乎大多数设备上的GL_MAX_TEXTURE_SIZE至少 1024x1024 ,但我不想达到最大值,所以也许我可以使用 512x512 ,但这并不意味着画一个很多瓷砖,在每一帧上重新绑定许多纹理=>性能低下?
  • libgdx有GraphicsTileMaps,它似乎是自动绘制图块的工具。但它也支持我不需要的许多功能(将信息映射到磁贴),也许最好手动拆分?

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

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

非常感谢任何建议! :)

1 个答案:

答案 0 :(得分:3)

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

'未来'表格肯定会支持更大的纹理,所以不要太担心它。

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

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

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

我建议你开始编码,然后调整性能。您遇到的这个特殊问题并不难以在以后进行优化。