首页 > 解决方案 > 生成和显示数千个多边形的最佳实践

问题描述

我目前正致力于在屏幕上的任何一点生成和显示数千个多边形,我目前通过定义顶点并使用顶点列表创建网格,将其应用于网格渲染器并让它实例化对象来做到这一点。

这...在我的开发人员 PC 上很好,但在速度较慢的计算机或手机上,它就是行不通。

我主要希望是否有任何方法可以在不使用网格实例化对象的情况下渲染大量小多边形?我在考虑可能使用着色器,但我不是最擅长编写它们!它们都需要是静态的并且能够改变颜色等吗?

如果最好的方法是使用着色器......你会怎么做。

非常感谢!

标签: unity3d

解决方案


在我弄清楚如何编写着色器之前,我找到了一个很好的解决方案。

因为我动态生成网格而不是使用网格渲染器创建游戏对象并实例化它。我正在做的是找到所有具有相同材料的网格并使用统一网格组合器制作单个网格,然后使用统一的 drawmesh 函数来避免实例化对象。

使用这种方法,我现在可以在手机上以 60FPS 的速度渲染 260 万个三角形。

编辑: 比较

原始方法:260 万个 tris,19,000 个对象单个网格。50% 的 CPU 使用率,3FPS。

第二种方法:使用 DrawMeshInstanced 对 260 万个 tris、0 个对象、19,000 个实例化网格进行批处理。100% CPU 使用率 0.4FPS。试图利用 gpu 实例化。

第三种方法:260万个tris,0个物体,10个组合网格,使用DrawMesh方法进行渲染。13% cpu 使用率 60+FPS


推荐阅读