我目前正在致力于在屏幕上的任意一点生成和显示数千个多边形,我目前通过定义顶点并使用顶点列表创建网格来实现此目的,将其应用到网格渲染器并让它实例化对象。
这...在我的开发者 PC 上没问题,但在速度较慢的计算机或手机上,它就不起作用。
我主要希望是否有任何方法可以渲染大量小多边形而不用网格实例化对象?我正在考虑使用着色器,但我不是最擅长编写它们的!它们都需要是静态的并且能够改变颜色等?
如果最好的方法是使用着色器...您会怎么做。
非常感谢!
最佳答案
在我弄清楚如何编写着色器之前,我找到了一个很好的解决方案。
因为我动态生成网格,而不是使用网格渲染器创建游戏对象并实例化它。我正在做的是找到具有相同 Material 的所有网格,并使用 unitys 网格组合器来制作单个网格,然后使用 unitys drawmesh 函数来避免实例化对象。
使用此方法,我现在可以在手机上以 60FPS 渲染 260 万个三角形。
编辑: 比较
原始方法: 260 万个三角形,19,000 个对象单独的网格。 50% CPU 使用率,3FPS。
第二种方法: 260 万个三角形、0 个对象、19,000 个实例化网格体,使用 DrawMeshInstanced 对其进行批处理。 100% CPU 使用率 0.4FPS。尝试利用 GPU 实例。
第三种方法: 260 万个三角形、0 个对象、10 个组合网格并使用 DrawMesh 方法进行渲染。 13% CPU 使用率 60+FPS
关于unity-game-engine - 生成和显示数千个多边形的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50519111/