TBR芯片在碎片处理之前执行HSR (隐藏表面移除),因此只渲染可见像素。此功能不需要从前到后对不透明对象进行排序。但我在我的iPhone 3GS上做了一个实验。通过比较帧时间,从前到后渲染不透明对象的速度比从后到前快得多。为什么它会显示这个结果?无论以哪种顺序呈现对象,性能都应该非常接近。
发布于 2009-11-06 02:57:10
我相信,不执行片段处理的优化是通过使用Z-buffer来确定像素是否可见(如果像素不可见,则在流水线早期执行)。因此,对于这种优化来说,从后到前渲染将是最坏的情况(不可能进行优化),而从前到后渲染是最好的情况(所有最终隐藏的像素都已经隐藏)。
发布于 2009-11-06 07:03:50
如果为真,则与Apple's documentation on the topic相矛盾
1. Draw opaque objects first.
2. Next draw objects that require alpha testing (or in an OpenGL ES 2.0 based application, objects that require the use of discard in the fragment shader.) Note that these operations have a performance penalty, as described in “Avoid Alpha Test and Discard.”
3. Finally, draw alpha-blended objects.
以及文档here
延迟渲染的另一个优点是,它允许图形处理器在处理碎片之前执行隐藏表面删除。在不对纹理进行采样或执行碎片处理的情况下,不可见的像素将被丢弃,从而显著减少渲染场景时GPU必须执行的计算量。要获得此功能的最大好处,应尝试使用不透明内容绘制尽可能多的场景,并尽量减少混合、alpha测试和GLSL着色器中的丢弃指令的使用。因为硬件执行隐藏表面删除,所以应用程序没有必要从前到后对其几何图形进行排序。
https://stackoverflow.com/questions/1682688
复制相似问题