说,我有一些渲染单位按照相机顺序排序。
例如ru0, ru1, ru2, ru3, ru4, ru5...
。这样做的目的是避免z深度测试过度绘制。
但是,在批量渲染视图中,这是一种浪费。
假设ru1, ru3, ru5
具有相同的渲染状态(相同的opengl状态和相同的着色器程序),所以应该对它们进行批处理并一次渲染。
但是,这不是要避免透支让我这么做。
所以,我的问题是,这是一个基于特定场景的问题(例如在某些情况下,透支的消耗时间不超过opengl状态改变消耗)或者还有另一种方式解决这个问题?
注意,我的所有渲染单位都是不透明的,所以我不会在这里考虑透明单位。
答案 0 :(得分:0)
现代硬件很可能实现"Early z-test",即在运行片段(像素)着色器之前执行深度测试。或者,它可以手动实现。
因此,按州排序可能更有利,除非您有透明度问题。在后一种情况下,您可能需要查看"Order-independent transparency"。
无论如何,不要相信任何人。测量(配置文件)并在优化任何内容之前进行比较。