原始物件拓撲
Direct3D 支援多個原始物件拓撲,該拓撲會定義管線解譯和轉譯頂點的方式,例如點清單、線條清單和三角形寬帶。
基本原始物件拓撲
下列基本原始物件拓撲 (或原始物件類型) 會受到支援:
如需每個原始物件類型的視覺化內容,請參閱本主題稍後捲繞方向和前置頂點位置一節中的圖表。
輸入組合語言 (IA) 階段會從頂點和索引緩衝區讀取資料、將資料組合到這些原始物件中,然後機資料傳送至其餘的管線階段。
原始物件相鄰
所有 Direct3D 原始物件類型 (除了點清單之外) 皆提供兩種版本:具有相鄰的原始物件類型,以及不具相鄰的原始物件類型。 具有相鄰的原始物件會包含幾個周圍頂點,而不具相鄰的原始物件則僅包含目標原始物件的頂點。 舉例來說,線條清單原始物件會具有包含相鄰的對應線條清單原始物件。
相鄰的原始物件旨在提供有關幾何的詳細資訊,且僅能透過幾何著色器檢視。 相鄰對使用剪影偵測和陰影體擠壓等項目的幾何著色器而言相當實用。
舉例來說,假設您想要繪製具有相鄰的三角形清單。 包含 36 個頂點的三角形清單 (具有相鄰) 會產生 6 個已完成的原始物件。 具有相鄰的原始物件 (除了線條寬帶之外) 所包含的頂點數量為不具相鄰之原始物件的兩倍,而當中的每個額外頂點皆為相鄰頂點。
捲繞方向和前置頂點位置
如下圖所示,前置頂點為原始物件的第一個非相鄰頂點。 原始物件類型可定義多個前置頂點,只要每個前置頂點都用於不同的原始物件即可。
- 針對具有相鄰的三角寬帶,前置頂點為 0、2、4、6,並依此類推。
- 對於具有相鄰的線條寬帶,前置頂點為 1、2、3,並依此類推。
- 相較之下,相鄰的原始物件則沒有任何前置頂點。
下圖顯示輸入組合語言可產生之所有原始物件類型的頂點順序。
下表將說明上圖的各種符號。
符號 | 名稱 | 描述 |
---|---|---|
端點 | 3D 空間中的點。 | |
捲繞方向 | 組合原始物件的頂點順序。 可以採順時針或逆時針形式。 | |
前置頂點 | 原始物件中包含每一常數資料的第一個非相鄰頂點。 |
產生多個寬帶
您可以透過寬帶切割來產生多個寬帶。 只要明確呼叫 RestartStrip HLSL 功能,或將特殊索引值插入索引緩衝區,即可執行寬帶切割。 這個值為 –1,32 位元索引為 0xffffffff,16 位元索引則為 0xffff。
索引值為 –1 的索引代表明確「切割」或「重新啟動」目前的寬帶。 上一個索引會完成先前的原始物件或寬帶,而下一個索引則會啟動新的原始物件或寬帶。
如需產生多個寬待的詳細資訊,請參閱幾何著色器 (GS) 階段。
相關主題