【发布时间】:2017-02-04 23:05:59
【问题描述】:
我正在编写一个绘制网格的 Android 应用程序,您可以四处移动并朝其方向移动。网格由大约 2000 到 5000 个四边形组成,每个四边形都有不同的纹理。我定义了 4 个顶点并使用索引缓冲区来绘制每个四边形。在绘制之前,我使用模型矩阵定位它。正如您可以在我的场景中移动一样,我使用视锥体剔除,这在某些情况下会提高性能。不幸的是,我可能需要绘制所有的四边形,所以我想问一下如何防止缓慢绘制。
我不能使用纹理图集,因为所有纹理都非常大(从 256x256 到 1024x1024)。我认为为每个小队调用 glDrawElements() 会让我变慢,但我不知道如何改变它。
我的另一个想法是将场景绘制到纹理上,然后将此纹理绑定到单个四边形,以创建正在绘制的场景的错觉。随着用户越来越近,我可以重新绘制它以获得更好的分辨率。这行得通吗?
我期待任何形式的帮助。
【问题讨论】:
-
准备一批使用相同纹理的四边形以减少开销。
-
256x256x4 x 2000 = ~524MB。你没有提到任何关于 mipmap 的内容,但是,为了接近合理的帧速率,你可能需要它们,因为对于大多数移动 GPU 来说,这太多的数据无法处理。
标签: java android performance opengl-es drawing