3d 三维图形:栅格化三角形

3d 三维图形:栅格化三角形,3d,theory,3d,Theory,这主要是一个理论问题 假设我想在屏幕上画一个三角形。如果我在3d中为顶点着色器提供3个点,它会将它们转换为2d、窗口坐标或屏幕坐标中的3个点。监视器或显示器上基本上有3个像素的坐标 从这里开始,图形管道如何基于这三个点填充这个三角形?我猜是这样的: 通过确定x和y的上下界,将三角形与长方体绑定,如下所示: 用于使用3种不同的颜色绘制三角形的3条边。此步骤不能使用常规颜色缓冲区 对框中的每一行像素执行此操作:从最左边的像素开始(在其中存储步骤2的结果),向右移动直到碰到边缘。现在,继续向右,

这主要是一个理论问题

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

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

  • 通过确定x和y的上下界,将三角形与长方体绑定,如下所示:

  • 用于使用3种不同的颜色绘制三角形的3条边。此步骤不能使用常规颜色缓冲区

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

  • 在常规颜色缓冲区中使用片段着色器绘制边

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

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

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