如何检索2D三角形中所有线条的扫描线?
我试图实现2D软件渲染器的最基本功能,即纹理映射三角形。我做过这件事的时间比使用OpenGL算得多,但我发现自己在试图自己做的时候一瘸一拐。
我看到一些文章说为了填充一个三角形(其三个顶点各自的纹理坐标夹在[0,1]中),我需要在这三个点之间进行线性插值。什么?我认为插值是在两个n维值之间。
请注意;这不是3D,它严格来说是2D,所有三角形都是任意的(不以任何方式轴对齐)。我只需要像OpenGL一样用屏幕填充屏幕。我无法使用OpenGL作为解决方案。
答案 0 :(得分:2)
可在此处找到优秀的答案和说明:http://sol.gfxile.net/tri/index.html
您可以使用Bresenham algorithm绘制/找到边。
答案 1 :(得分:1)
处理它的一种方法是,如果使用扫描线算法,则分两步进行插值。首先,在三角形的边缘上插值,并在开始绘制扫描线时,在该扫描线的起始值和结束值之间进行插值。
由于您在2d工作,您还可以使用矩阵变换来获得纹理坐标的屏幕坐标。昨天我回答了类似的问题here。这种技术在数学中被称为change of basis。