共用方式為


輸入組合器階段

輸入組合器 (IA) 會從 1D 緩衝區提取來源幾何圖形資料,將三角形、線條或點引入轉譯管線。

頂點資料可以來自多個緩衝區,而且可以從每個緩衝區以結構陣列方式存取。 每個緩衝區都會綁定至個別輸入插槽,並給予結構步幅。 所有緩衝區的資料配置由輸入宣告指定,其中每個項目定義一個 元素。 元素包含輸入位置、結構位移、資料類型和目標暫存器 (管線中的第一個作用中著色器) 。

指定的頂點序列是由從緩衝區擷取的資料建構。 資料會在遍歷中取得,該遍歷由固定函式狀態和各種 Draw*() DDI 呼叫的組合引導。 各種基本拓撲(例如,點清單、折線清單、三角形清單和三角形帶狀結構)可用來讓頂點數據序列代表基本類型序列。

頂點數據可以用下列兩種方式之一產生。 產生頂點數據的第一種方式是 非索引繪製,這是對包含頂點數據的緩衝區進行循序遍歷。 頂點數據源自每個緩衝區系結的開始位移。 產生頂點數據的第二種方式是 索引化呈現,透過順序遍歷包含純量整數索引的單一緩衝區來實現。 索引源自緩衝區的開始位移。 每個索引會指出要從包含頂點數據的緩衝區擷取數據的位置。 索引值與它們所參考之緩衝區的特性無關。 宣告用來描述緩衝區。 非索引和索引渲染會以各自的方式產生位址,從中擷取記憶體中的頂點數據,然後將結果組合成頂點和圖元。

實例化幾何渲染是透過允許在非索引和索引渲染中,依序遍歷每個頂點緩衝區(非索引情況)或索引緩衝區(索引情況)中的範圍來實現的。 緩衝區系結可以識別為 實例數據頂點數據。 此識別會指定如何在執行實例轉譯時使用系結緩衝區。 非索引或索引轉譯所產生的位址是用來擷取頂點數據,這也表示運行時間執行實例轉譯時迴圈。 另一方面,實例數據會一律從每個緩衝區的位移開始依序遍歷,遍歷頻率為每個實例一次(例如,在遍歷完一個實例中的頂點數目後,再向前一個步驟)。 實例數據的步驟速率也可以選擇為實例頻率的子調和(也就是,每隔一個實例進一步、每隔兩個實例進一步,依此類推)。

IA 的另一個特殊案例是,它可以讀取數據流輸出階段寫入的緩衝區。 這種情境可以啟用一種新型的繪製操作 DrawAutoDrawAuto 允許將寫入數據流輸出緩衝區的動態輸出量重複使用,而不需要 CPU 參與,即可判斷實際寫入的數據量。

除了從緩衝區產生頂點數據之外,IA 還可以自動產生三個純量計數器值:VertexID、PrimitiveID 和 InstanceID,以輸入轉譯管線中的著色器階段。

在條帶拓撲的索引轉譯中,例如三角形條帶,提供一種機制,可使用單一 *Draw*() 呼叫來繪製多個條帶 (也就是切割條帶的 *cut 命令) 。

Direct3D 執行階段會呼叫下列驅動程式函式來建立、設定和終結 IA:

CalcPrivateElementLayoutSize

CreateElementLayout

DestroyElementLayout

IaSetIndexBuffer

IaSetInputLayout

IaSetTopology

IaSetVertexBuffers