光栅化规则简介

通常,为顶点指定的点与屏幕上的像素不匹配。 发生这种情况时,Direct3D 将应用三角形光栅化规则来决定应用于给定三角形的像素。

这是光栅化规则的简化介绍。 有关详细信息,请参阅 光栅化规则。 另请参阅 光栅化器(RS)阶段

三角形光栅化规则

Direct3D 使用左上角填充规则来填充几何对象。 这是用于 GDI 和 OpenGL 中矩形的相同约定。 在 Direct3D 中,像素的中心是决定性点。 如果中心位于三角形内,则像素是三角形的一部分。 像素中心位于整数坐标处。

本文对Direct3D使用的三角形光栅化规则的说明不一定适用于所有可用硬件。 测试可能会发现这些规则的实现中的细微变化。

下图显示了一个矩形,其左上角位于(0,0),其右下角位于(5,5)。 此矩形填充了 25 像素,如你所预期的那样。 矩形的宽度定义为向右减左。 高度定义为底部减去顶部。

一个被划分为六行六列的数字正方形

在左上角填充约定中,顶部 是指水平跨度的垂直位置,左侧 是指跨度内像素的水平位置。 边缘不能是上边缘,除非它是水平边缘。 一般情况下,大多数三角形只有左右边缘。 下列插图显示了上边缘和右边缘。

包含两个三角形的带编号正方形

左上填充规则决定了三角形穿过像素中心时 Direct3D 所执行的操作。 下图显示了两个三角形,一个在 (0, 0), (5, 0), 和 (5, 5), 另一个位于 (0, 5), (0, 0), 和 (5, 5)。 在这种情况下,第一个三角形获取 15 像素(以黑色显示),而第二个三角形仅获取 10 像素(以灰色显示),因为共享边缘是第一个三角形的左边缘。

一个带编号的正方形,显示两个三角形

如果定义一个矩形,其左上角为 (0.5, 0.5) 和右下角 (2.5, 4.5),则此矩形的中心点为 (1.5, 2.5)。 当 Direct3D 光栅器镶嵌此矩形时,每个像素的中心明确位于四个三角形之内,因此没有必要使用左上角的填充规则。 下图显示了这一点。 矩形中的像素根据 Direct3D 包含这些像素的三角形进行标记。

一个编号为包含矩形的正方形的屏幕截图,其中矩形被划分为四个三角形。

如果在上图中移动矩形,使其左上角位于(1.0、1.0)、右下角(3.0、5.0)和其中心点(2.0,3.0),Direct3D 将应用左上角填充约定。 下图所示,此矩形中的大多数像素在两个或多个三角形之间跨越边框。

矩形向下和向右移动后编号正方形的屏幕截图。

对于这两个矩形,相同的像素受到影响,如下图所示。

受前面两个编号正方形影响的像素

点和线规则

点的呈现方式与点子画面相同,它们都呈现为屏幕对齐的四边形,因此遵循与多边形呈现相同的规则。

非抗锯齿线渲染规则与 GDI 线完全相同。

点精灵规则

点精灵和补丁基元的光栅化处理,就像基元首先被细分成三角形,生成的三角形然后进行光栅化。

设备

光栅化器(RS)阶段

光栅化规则