2

如何检索二维三角形中所有线的扫描线?

我正在尝试实现 2D 软件渲染器的最基本功能,即纹理映射三角形。我这样做的次数比使用 OpenGL 的次数还多,但我发现自己在尝试自己做时一瘸一拐。

我看到很多文章说,为了填充一个三角形(三个顶点的纹理坐标都被钳制为 [0, 1]),我需要在三个点之间进行线性插值。什么?我认为插值是在两个 n 维值之间。

笔记; 这不适用于 3D,它是严格的 2D,所有三角形都是任意的(不以任何方式轴对齐)。我只需要像 OpenGL 那样用它们的纹理填充屏幕。我不能使用 OpenGL 作为解决方案。

4

2 回答 2

2

可以在这里找到一个很好的答案和描述:http: //sol.gfxile.net/tri/index.html

您可以使用Bresenham 算法绘制/查找边。

于 2012-01-14T19:42:28.573 回答
1

如果使用扫描线算法,一种处理方法是分两步进行插值。首先,您在三角形的边缘插入值,当您开始绘制扫描线时,您在该扫描线的开始值和结束值之间进行插入。

由于您在 2d 中工作,您还可以使用矩阵变换来获取屏幕坐标到纹理坐标。昨天我在这里回答了一个类似的问题。这种技术在数学中被称为改变基础。

于 2012-01-13T09:37:39.463 回答