首页 > 解决方案 > 大型合并网格的低 FPS

问题描述

我尝试渲染一组 3d 模型。我将网格合并为一个具有 200k 个顶点的网格。具有位置、法线和纹理坐标属性。我使用VBO但不使用索引缓冲区对象。我只做 2 个渲染调用(一个用于阴影)。我用libgdx.

我希望我的弱点上的合并网格具有良好的 FPS Galaxy j3 (2016),但我得到了 13 FPS。在 Galaxy s8 和 nexus 5 上,我得到了 60 FPS。

所以有什么问题?
Galaxy j3 对于 200k 顶点来说是不是太弱了?
或者 200k 顶点是太大的网格?

Galaxy J3 特性:
CPU:展讯 SC9830I Quad,1.5 ГГц。
内存:1.5 Gb。
GPU:ARM Mali-400 MP2。

标签: androidopengl-eslibgdxopengl-es-2.0mali

解决方案


Mali-400 是一种旧设计,具有非常单一的顶点处理器,不会随着核心数量的增加而扩展,因此它绝对可以应对顶点复杂度,其中复杂度为shader cost * vertex count.

值得注意的是,将所有内容合并到一次平局通常会适得其反。您希望将绘图调用数减少到 CPU 可以处理的数量,但是一旦您的绘图调用少于几百个,它就不太可能为您带来太多收益,并且您会浪费很多机会。例如,您失去了在 CPU 上剔除截锥体对象的能力,即使在更现代的 GPU 上,这也是强烈推荐的最佳实践。


推荐阅读