1

TBR 芯片在片段处理之前执行 HSR(隐藏表面去除),因此只渲染可见像素。此功能无需从前到后对不透明对象进行排序。但是我在我的 iPhone 3GS 上做了一个实验。通过比较帧时间,从前向后渲染不透明对象比从后向前渲染要快得多。为什么会显示这个结果?当对象以任何顺序呈现时,性能应该非常接近。

4

2 回答 2

1

我相信不执行片段处理的优化是通过使用 Z 缓冲区来确定像素是否可见(如果像素不可见,则尽早退出管道)。因此,对于该优化,从后到前渲染将是最坏的情况(不可能进行优化),而从前到后是最好的情况(所有最终隐藏的像素都已隐藏)。

于 2009-11-05T18:57:09.857 回答
1

如果属实,则与Apple 关于该主题的文档相矛盾:

  • 不要浪费 CPU 时间从前到后排序对象。用于 iPhone 和 iPod touch 的 OpenGL ES 实现了一个基于图块的延迟渲染模型,这使得这变得不必要。有关详细信息,请参阅“基于 Tile 的延迟渲染”。
  • 按对象的不透明度对对象进行排序:

    1. 首先绘制不透明的物体。
    2. 接下来绘制需要 Alpha 测试的对象(或在基于 OpenGL ES 2.0 的应用程序中,需要在片段着色器中使用丢弃的对象。)请注意,这些操作会降低性能,如“避免 Alpha 测试和丢弃”中所述。 </li>
    3. 最后,绘制 alpha 混合对象。

以及这里的文档:

延迟渲染的另一个优点是它允许 GPU 在处理片段之前执行隐藏表面移除。不可见的像素会在不采样纹理或执行片段处理的情况下被丢弃,从而显着减少 GPU 渲染场景时必须执行的计算。为了从这个特性中获得最大的好处,你应该尽可能多地用不透明的内容绘制场景,并尽量减少混合、alpha 测试和 GLSL 着色器中的丢弃指令的使用。由于硬件执行隐藏表面移除,因此您的应用程序无需从前到后对其几何图形进行排序。

于 2009-11-05T23:03:50.240 回答