我正在尝试最小化 Unity 画布中的 SetPass 调用。
考虑以下示例:
画布中的渲染是逐层进行的。渲染顺序可以如下所示:- 红色方块(+1 套传球)
- 文本“1”和黄色方块(+2 设置传球)
- 文字“2”和粉红色方块(+2 设置通行证)
- 文本“3”(+1 设置传球)
或者,它可能会好一点:
- 红色方块(+1 套传球)
- 黄色方块,然后是文本“1”(+1 设置通行证)
- 粉红色方块,然后发短信“2”和“3”(+2 设置通行证)
因此,绘图正在从默认图像材料切换到文本材料并返回。此绘图的结果将产生至少4 个绘图调用,而不是 2 个。即使只使用了 2 个材质。此示例还假设未对红色、黄色和粉色方块进行批处理。
问题:有没有办法确保文本始终绘制在顶部? 笔记:- TextMeshPro UI 材料(移动覆盖)在这里没有帮助。
- 统一 2019.3.12.f1
- 所有文本实际上都作为最后一层放置(例如,它们上面没有任何绘图)。
- 批处理有时会有所帮助。但是,复杂的 UI 可能会使用多种材质。由于我的意图是始终在所有内容上绘制文本,因此没有通用的解决方案吗?
- Z 顺序使绘图顺序变得更糟,并且材料之间的切换发生得更频繁。