【发布时间】:2015-08-21 00:39:25
【问题描述】:
如果我渲染 15 个完全不透明且大小相同的四边形并禁用深度测试,GPU 硬件/软件切割器是否足以处理最上面的四边形并丢弃其他顶点/片段?或者使用模板缓冲区来实现相同的效果会受益吗?
【问题讨论】:
如果我渲染 15 个完全不透明且大小相同的四边形并禁用深度测试,GPU 硬件/软件切割器是否足以处理最上面的四边形并丢弃其他顶点/片段?或者使用模板缓冲区来实现相同的效果会受益吗?
【问题讨论】:
在这种情况下,大多数 GPU 会过度绘制,如果您的四边形很大,这将对性能非常不利。最好的优化方法可能是启用深度测试,分配适当的深度值并从前到后渲染四边形,而不是使用模板缓冲区。
但是,在某些条件下(例如,没有混合),许多移动设备(尤其是所有 iOS 设备和许多 Android 设备使用的 PowerVR 设备)中常见的基于图块的延迟渲染 (TBDR) GPU 将执行称为隐藏表面移除 ( HSR),它将优化这种情况并避免渲染将被遮挡的像素。
【讨论】:
毫无疑问,它会为所有不透明的四边形生成片段。此外,如果您禁用深度测试,您可能会在屏幕上看到背面。因为深度测试被禁用,最后渲染的人将绘制屏幕。
即使您使用模板缓冲区,仍然会为四边形生成片段,请通过模板和深度测试。
【讨论】: