5

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

我想以平板电脑为目标,所以我需要以某种方式能够显示至少1280x800的背景图像,在其上还会发生更多动作,所以我需要它尽可能快地渲染。

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

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

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

同样,这里的重点是我的性能 - 因为绘制背景预计是最基本的东西,更多的动画将在它之上!

随着平板电脑屏幕尺寸的增加,我预计很快我将需要能够舒适地渲染更大的图像尺寸:)

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

4

1 回答 1

3

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

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

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

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

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

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

于 2013-01-01T14:00:19.173 回答