光栅化规则 (Direct3D 9)

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

三角形光栅化规则

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 线完全相同。

有关抗锯齿线呈现的信息,请参阅 ID3DXLine

点子画面规则

点子画面和修补基元的光栅化,就像基元首先分割成三角形,生成的三角形光栅化。 有关详细信息,请参阅 点子画面(Direct3D 9)

坐标系和几何图形