如何在一个平局中处理大量的纹理?

我目前正在开发文字渲染和基于纹理混合的简单风景的纹理。 例如类似的东西,但在3D中。

在第一个实现中,我已经使用2D纹理数组来实现纹理切换的问题,以便能够在一个opengl绘制调用中绘制整个景观网格,并且效果很好,但是这应该在opengl es 2.0设备上运行,并且它们没有2纹理arrays支持。 所以我的问题是 – 我能做些什么来处理这样的问题呢?


当然,我可以分别绘制每个景观四元组,但是我非常确定,这个解决scheme真的会真正的performance真正的心脏。 (MB我错了?)

我也知道纹理图集,但是我可以保证我可以把所有可能的纹理分块着色器为每个可能的瓷砖组合?(地形瓷砖风景和每个可能的文字字符大小不同,我想你明白了)我几乎当然,我不能,这就是为什么我在这里问这个问题。

对不起,我可怕的英语,我正在努力。

你应该做的第一件事就是在屏幕上获得一些东西,并让它呈现一个风景。 如果这意味着在一个单独的绘画电话中渲染每个风景四边形,那就这样吧。

接下来,确定它的确切速度。 将您的风景缩放到您游戏中最有可能需要的尺寸,例如1000 x 1000四边形。

现在你可以开始寻找优化。 你需要渲染整个景观还是只渲染玩家可见的部分? 如果不是,请尝试使用平截头剔除来渲染实际可见的贴图。

如果截锥取样后仍然太慢,那么只有这样才能开始考虑使用纹理图集。 确定目标设备支持的最大纹理尺寸,例如4096 x 4096像素。 你可以使用像纹理包装工具来创建你的纹理地图集。

分组地形纹理,并试图使他们适合在这个空间。 也许草地质地需要很多细节,而雪质地根本不需要太多。 在这种情况下,您可以使草纹理1024 x 1024和雪纹理128 x 128。

玩不同的尺寸,直到你在地图集的大小和渲染速度之间有一个很好的折衷。