减少绘制调用的方法

问题描述

我是新来的,我知道这个问题特定于我的用例,但我希望没问题。

我正在开发 VR 音乐可视化工具。 为此,我对 FFT 进行了预处理,并在隧道中实例化了 250 行和 32 个对象(总共 8.000 个),每个频率的每个幅度都由一行中一个对象的高度表示。 我只实例化 500 行,而不是整首歌曲所需的数量的原因是为了提高性能

每行中的每个对象都有 8 个顶点,因此我已经在 64.000 个顶点处,并且由于我还想将其他对象添加到场景中,出于性能原因,我希望将此 nmber 保持为最大值.为了仍然显示歌曲时间点的幅度,我改变了最远行中物体的位置并相应地改变它们的幅度。

但在我的 Oculus Quest 上,它根本不起作用,而且非常滞后。这可能是因为您可以看到大量的 Draw Call。

Image showing my setup and the high amount of Batches and Draw Calls

所以我必须减少批次的数量,以减少我所阅读的绘制调用数量

这只是为了澄清我的问题来自哪里。

据我所知,我(没有)有以下几种选择:

现在我的问题是我不能让这些对象静态并使用静态批处理,对吗? 因为我经常变换它们的位置和顶点

此外,他们不使用相同的网格,因此 GPU 实例化不起作用。

他们有超过 300 个顶点,因此动态批处理不在讨论范围内。

那么我还能如何减少绘制调用数量

我可以在每次重新定位最后一行后使用“StaticBatchingUtility.Combine”或“Mesh.CombineMeshes”吗?

如果是这样,这是否会提高我的性能,因为我大约每 0.3 秒调用一次?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)