光栅化规则简介

通常,为顶点指定的点不与屏幕上的像素精确匹配。 发生这种情况时,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) 阶段

光栅化规则