Answers:
从镶嵌细分的角度来看,lhf的答案是好的,但是在更简单的三角形网格用例中可能会出现这些问题。
以三个屏幕空间三角形,ABC,ADE和DBE的简单示例为例...
尽管从数学上讲,点E恰好位于线段AB上,但管道不会使用完全精确的值,例如有理数(例如https://gmplib.org/)。相反,它可能会使用浮点数,因此将引入一些近似/误差。结果可能是这样的:
请注意,所有顶点都可能不正确。尽管上面的示例显示了裂缝,但T形结可能会导致沿边缘的重叠,从而导致像素绘制两次。这可能看起来并不坏,但是可能导致透明性或模板操作问题。
然后,您可能会认为,使用浮点运算时,引入的错误将微不足道,但是在渲染器中,屏幕空间顶点(X,Y)值几乎总是由定点数表示,因此距理想位置的位移将通常更大。此外,随着渲染硬件以其自身的内部精度逐个像素“内插”线段,甚至有更多机会偏离E的舍入位置。
如果通过将三角形ABC分成两部分(即AEC和EBC)来“去除” T型结,则该问题将消失,因为由误差引起的偏移将保持一致。
现在,您可能会问为什么渲染器(尤其是硬件渲染器)将定点数学用于顶点XY坐标?他们为什么不使用浮点数来减少问题?尽管有些人做到了(例如Sega的Dreamcast),但它可能会导致另一个问题,即三角形设置数学上的灾难性错误,尤其是对于长细三角形而言,是不正确的,并且它们以不愉快的方式更改大小。