图片是两种情况的示例,其中渲染纹理多边形。全部由Opengl ES2完成。
A)多边形部分偏离视口 B)多边形完全位于其中
我的问题:
情况'A)'会消耗更少的系统/ gpu资源*,因为纹理部分偏离屏幕,或者它的表现与我在视口内部渲染的情况一样,为什么?< / strong>
*“资源” - 意思是速度,而不是记忆。
我知道opengl在渲染纹理之前首先计算顶点,如果顶点在屏幕/视口之外,它会跳过任何进一步的计算,但是与纹理对象部分偏离屏幕的情况相同吗? 是否会省略不可见的纹理部分?
答案 0 :(得分:3)
情况A应该更快。顶点处理将是相同的。之后,应用裁剪到视图体积。在情况A中,多边形的一部分将被剪裁,而整个多边形在情境B中经过。之后,多边形被光栅化,并且所得到的片段进入片段处理。由于情况A中的碎片较少,因此在此阶段的工作量较少。片段着色器执行纹理采样,因此在这种情况下只会对纹理的可见部分进行采样。
剪辑也可以在片段生成后发生,但我总是希望它在片段着色器之前完成。
虽然在情况A中总是会有较少的工作,但这并不一定意味着你会在渲染中看到速度差异。您可能在管道的其他部分或应用程序代码中存在瓶颈。