點陣化規則 (Direct3D 9)
通常,為頂點指定的點不會精確符合螢幕上的圖元。 發生這種情況時,Direct3D 會套用三角形點陣化規則,以決定套用至指定三角形的圖元。
三角形點陣化規則
Direct3D 會使用左上方填滿慣例來填滿幾何。 這是 GDI 和 OpenGL 中用於矩形的相同慣例。 在 Direct3D 中,圖元的中心是決定性點。 如果中央位於三角形內,圖元是三角形的一部分。 圖元中心位於整數座標。
Direct3D 所使用的三角形點陣化規則描述不一定適用於所有可用的硬體。 您的測試可能會在這些規則的實作中發現次要變化。
下圖顯示左上角位於 (0, 0) 且右下角位於 (5, 5) 的矩形。 此矩形會填滿 25 像素,就像您預期的那樣。 矩形的寬度定義為向右減左。 高度定義為底部減去頂端。
在左上方填滿慣例中,頂端 是指水準範圍的垂直位置,而左 是指範圍內圖元的水準位置。 除非邊緣為水平,否則邊緣不能是上邊緣。 一般而言,大部分的三角形只有左邊緣和右邊緣。 下圖顯示上邊緣和右邊緣。
包含兩個三角形的編號方塊圖
左上方填滿慣例會決定當三角形通過圖元中心時,Direct3D 所採取的動作。 下圖顯示兩個三角形,一個在 (0, 0), (5, 0), 和 (5, 5), 另一個在 (0, 5), (0, 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 會套用左上角填滿慣例。 此矩形中的大多數圖元會跨越兩個或多個三角形之間的框線,如下圖所示。
對於這兩個矩形,相同的圖元會受到影響,如下圖所示。
點和線條規則
點會轉譯為點 Sprite,這兩者都轉譯為螢幕對齊的四邊形,因此會遵守與多邊形轉譯相同的規則。
非反鋸齒線轉譯規則與 GDI 行完全相同。
如需反鋸齒線轉譯的相關信息,請參閱 ID3DXLine。
點 Sprite 規則
點子精靈和修補基本類型會點陣化,就好像基本類型第一次鑲嵌成三角形,併產生三角形點陣化。 如需詳細資訊,請參閱 Point Sprites (Direct3D 9)。
相關主題