Share via


點陣化規則簡介

專為頂點指定的點,往往不會與螢幕上的像素精確相符。 發生這種情況時,Direct3D 會套用三角形點陣化規則,以判斷要套用至指定三角形的像素。

本文將簡單介紹點陣化規則。 如需詳細資訊,請參閱點陣化規則。 另外也請參閱轉譯器 (RS) 階段

三角形點陣化規則

Direct3D 會依循左上方填滿慣例來填滿幾何。 這與 GDI 和 OpenGL 中運用在矩形上的慣例相同。 在 Direct3D 中,像素的中心為決勝點。 如果中心位於三角形內,像素就會是三角形的一部分。 像素中心位於整數座標中。

Direct3D 使用的三角形點陣化規則描述不見得適用於所有可用的硬體。 在測試期間,您可能察覺這些規則在實作上的細微變異。

下圖顯示了左上角位於 (0, 0) 且右下角位於 (5, 5) 的矩形。 如同您所預期般,這個矩形會填滿 25 像素。 矩形的寬度會定義為由右至左相減。 高度會定義為由下而上相減。

a numbered square divided into six rows and columns

在左上填滿慣例中,上方 (top)代表水平範圍的垂直位置,而左側 (left) 則代表範圍內像素的水平位置。 除非邊緣為水平,否則不得為上方邊緣。 一般而言,多數三角形只會有左側和右側邊緣。 下圖顯示上方邊緣和右側邊緣。

a numbered square that contains two triangles

左上方填滿慣例會判斷當三角形通過像素中心時,Direct3D 會採取什麼動作。 下圖顯示兩個三角形,一個位於 (0, 0)、(5, 0) 和 (5, 5),另一個位於 (0, 5)、(0, 0) 和 (5, 5)。 在這個案例中,由於共用邊緣為第一個三角形的左側邊緣,因此,第一個三角形會為 15 像素 (以黑色顯示),而第二個只有 10 像素 (以灰色顯示)。

a numbered square that shows two triangles

如果您定義一個矩形,讓其左上角位於 (0.5, 0.5),而右下角位於 (2.5, 4.5),則該矩形的中心點就會在 (1.5, 2.5)。 當 Direct3D 轉譯器鑲嵌這個矩形時,每個像素的中心都會明確地位於四個三角形中的每個三角形內,且不需要使用左上方填滿慣例。 情況會如下圖所示。 矩形中的像素會根據 Direct3D 用來包含它們的三角形來加上標籤。

Screenshot of a numbered square that contains a rectangle that is divided into four triangles.

如果移動上圖中的矩形,好讓其左上角位於 (1.0, 1.0)、右下角位於 (3.0, 5.0),而且中心點位於 (2.0, 3.0),Direct3D 就會套用左上方填滿慣例。 這個矩形中的多數像素惠跨越介於兩個或三個三角形之間的框線,如下圖所示。

Screenshot of the numbered square with the rectangle moved down and to the right.

兩個矩形中的相同像素都會受到影響,如下圖所示。

pixels that are affected by the preceding two numbered squares

點和線條規則

點會使用與點原件相同的方式轉譯,也就是轉譯為與螢幕對齊的四邊形,進而遵守與多邊形轉譯相同的規則。

反鋸齒線條轉譯規則和 GDI 線條適用的轉譯規則完全相同。

點原件規則

點原件和填補原始物件會進行點陣化,如同原始物件先鑲嵌至三角形中,再將所產生的三角形點陣化一樣。

裝置

轉譯器 (RS) 階段

點陣化規則