輸入組合器階段
輸入組合器 (IA) 透過從 1D 緩衝區提取來源幾何資料,將三角形、線條或點導入轉譯管線。
頂點資料可能來自多個緩衝區,而且可以從每個緩衝區以結構陣列方式存取。 每個緩衝區都會系結至個別的輸入位置,並指定結構步進。 所有緩衝區的資料配置是由輸入宣告所指定,其中每個專案都會定義 元素。 元素包含輸入位置、結構位移、資料類型,以及管線中第一個作用中著色器的目標暫存器 () 。
指定的頂點序列是從緩衝區擷取的資料建構而來。 資料會透過固定函數狀態和各種 Draw* () DDI 呼叫的組合來擷取。 各種基本拓撲 (例如,點清單、線條清單、三角形清單和三角形帶狀) 可供使用,讓頂點資料序列代表基本類型序列。
頂點資料可以透過兩種方式之一來產生。 產生頂點資料的第一種方式是 非索引轉 譯,這是包含頂點資料的緩衝區循序周遊。 頂點資料來源自每個緩衝區系結的開始位移。 產生頂點資料的第二種方式是 編制索引轉 譯,這是包含純量整數索引之單一緩衝區的循序周遊。 索引源自緩衝區的開始位移。 每個索引會指出從包含頂點資料的緩衝區擷取資料的位置。 索引值與它們所參考之緩衝區的特性無關。 緩衝區是由宣告所描述。 非索引和已編制索引的轉譯會以自己的方式產生位址,以從中擷取記憶體中的頂點資料,然後將結果組合成頂點和基本類型。
實例幾何轉譯是藉由允許在非索引或索引轉譯中循序周遊,在每一個頂點緩衝區內迴圈 (非索引大小寫) 或索引緩衝區 (索引大小寫) 。 緩衝區系結可以識別為 實例資料 或 頂點資料。 此識別會指定在執行實例轉譯時如何使用系結緩衝區。 非索引或索引轉譯所產生的位址是用來擷取頂點資料,這也會考慮執行時間執行實例轉譯時的迴圈。 另一方面,實例資料一律會依序周遊,從每個緩衝區位移開始,頻率等於每個實例的一個步驟 (例如,在實例中的頂點數目周遊之後,會往前一個步驟) 。 實例資料的步驟速率也可以選擇為實例頻率的子調和 (,也就是一個步驟會向前轉送其他實例、每個第三個實例,依此類推) 。
IA 的另一個特殊案例是它可以讀取資料流程輸出階段寫入的緩衝區。 這類案例可啟用新的 繪製作業 DrawAuto類型。 DrawAuto 允許將寫入資料流程輸出緩衝區的動態輸出數量重複使用,而不需要 CPU 介入,即可判斷實際寫入的資料量。
除了從緩衝區產生頂點資料之外,IA 還可以自動產生三個純量計數器值:VertexID、PrimitiveID 和 InstanceID,以便輸入轉譯管線中的著色器階段。
在帶狀拓撲的索引轉譯中,例如三角形帶狀結構,會提供一個機制來繪製具有單一 *Draw* () (呼叫的多個帶狀區,也就是 *cut命令來剪下帶) 。
Direct3D 執行時間會呼叫下列驅動程式函式,以建立、設定及終結 IA: