1

我想知道绘制一个尺寸部分在截锥体之外的三角形是否会比我计算三角形被截锥体束缚的位置并制作一个(可能是两个)新三角形来绘制那个而不是更大的三角形时花费更长的时间导致相同的像素发生变化。

所以问题是是否有片段着色器运行在屏幕上甚至不存在的位置?或者是针对这个问题优化了光栅化阶段。

4

3 回答 3

2

现代 GL 硬件非常非常擅长根据视口裁剪三角形。

片段着色器只会在视口裁剪后幸存的像素上运行。

不要尝试在三角形级别进行平截头体剔除,而是在对象/平铺级别进行。您的 CPU 和顶点着色器单元会感谢您 :)

于 2013-07-12T15:16:41.280 回答
1

这完全是司机的事情。任何超出范围的三角形都会由您的驾驶员自动处理,理论上是将三角形细分为两个较小的三角形;我怀疑你能否比你的 GPU 更快地做到这一点。

不过,有一些技术可以在不细分的情况下优化绘图范围之外的三角形;您可以指定一个不需要细分的区域(某种边界),如果该点恰好位于内部,则会发出特殊处理,但通常它会跳过不必要的片段计算。

TL;DR:相信你的 GPU。

于 2013-07-12T15:17:37.957 回答
0

简短的回答:
不,片段着色器不会针对截锥体之外的像素运行。
但是你真正应该担心的是顶点着色器。即使整个三角形都在截锥体之外,它也会运行,因为 GPU 无法预测(不是我知道的方法)三角形是否会出现在屏幕上。

于 2013-07-12T15:38:13.300 回答