3d图形:栅格化三角形

时间:2012-06-06 07:36:09

标签: 3d theory

这主要是一个理论问题。

假设我想在屏幕上绘制一个三角形。如果我在3d中为我的顶点着色器提供3个点,它将在2d,窗口坐标或屏幕坐标中将它们转换为3个点。基本上是显示器或显示器上的3个像素坐标。

从这里开始,图形管道如何基于这三个点来填充这个三角形?我的猜测是这样的:

  1. 通过确定x和y的上限和下限来将三角形用框绑定,如下所示: enter image description here

  2. 使用Bresenham's line algorithm以3种不同颜色绘制三角形的3条边。您不能在此步骤中使用常规颜色缓冲区。

  3. 对框中的每一行像素执行此操作:从最左边的像素开始(在存储步骤2的结果的时候),向右移动直到你碰到边缘。现在,继续向前,着色像素(运行片段着色器),并写入常规颜色缓冲区,直到你遇到不同的行(在存储步骤2的结果时,击中不同颜色的像素)。然后停下来,转到下一行。

  4. 使用常规颜色缓冲区中的片段着色器绘制边缘。

  5. 这似乎是一个复杂而低效的解决方案。它是如何实际完成的?

1 个答案:

答案 0 :(得分:1)

查看scanline algorithm。它基本上是从上到下移动一条水平线,计算这条扫描线与三角形的两个交点,然后在这两点之间画一条线。