我想在160*160的彩色附件中画一个三角形。协调是
\n-1.0,1.0,0.0\n-0.9,0.9,0.0\n-0.8,1.0,0.0\nRun Code Online (Sandbox Code Playgroud)\n在我看来,三角形的宽度是0.2,所以它应该占据16个像素。\n但结果是15。\n
我想知道GPU如何处理这种情况?我可以找到一些算法或公式\xef\xbc\x9f
\n三角形的边缘恰好穿过像素中心(在半整数坐标处)。因此,无法很好地确定边缘上的那些像素是否属于三角形。
一个适用的规则是,共享边缘的三角形必须对该边缘上的像素精确地光栅化一次,以防止混合产生伪影等。实现的方式是在单独光栅化每个三角形时包括左边缘并排除右边缘(例如)。
请注意,这仅适用于样本恰好位于边缘时的平局决胜。如果将三角形提高四分之一像素,则所有样本都将明确位于三角形内部或外部,并且其表观宽度将如您所期望的那样。
为了清楚起见,下面是一个图表,其中三角形绘制在 60x60 帧缓冲区上。菱形表示每个像素内样本的位置。白色菱形位于三角形之外,因此没有阴影。黑色菱形被确定位于三角形内,因此被加阴影。红色菱形恰好位于右边缘,并且被认为位于三角形之外,如前所述,因此它们也没有被遮挡。结果是三角形在屏幕上的宽度只有五个像素,而不是您期望的六个:
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |