資料流輸出階段

串流輸出 (SO) 階段可以在這些頂點到達點化程式之前,將頂點串流至記憶體。 資料流程輸出的運作方式就像管線中的點選一樣。 即使資料繼續向下流向點陣化,也可以開啟此點選。 透過資料流程輸出傳送的資料會串連至緩衝區。 這些緩衝區可以在後續傳遞時重新產生為管線輸入。

資料流程輸出的其中一個條件約束是系結至幾何著色器,因此它們必須一起建立 (但可以是 「Null」/「off」) 。 不過,串流至 的特定記憶體緩衝區不會系結至特定的幾何著色器和資料流程輸出組。 只有要饋送至資料流程輸出頂點資料部分的描述會系結至幾何著色器。

資料流程輸出可能有助於儲存將重複使用的已排序管線資料。 例如,將頂點傳遞至管線時,可能會「面板化」一批頂點,就像是獨立點一樣, (只流覽所有點) 一次、在每個頂點上套用「面板化」作業,並將結果串流至記憶體。 儲存的「面板化」頂點隨後可供作為輸入使用。

由於透過資料流程輸出所寫入的輸出量是動態的,所以需要新的 Draw、 DrawAuto類型,才能讓串流輸出緩衝區與輸入組合器重複使用,而不需要 CPU 介入來判斷實際寫入的資料量。 此外,需要查詢來減輕資料流程輸出溢位,以及擷取寫入資料流程輸出緩衝區的資料量, (D3D10DDI_QUERY_STREAMOVERFLOWPREDICATE和D3D10DDI_QUERY_STREAMOUTPUTSTATS D3D10DDI_QUERY 列舉) 。

Direct3D 執行時間會呼叫下列驅動程式函式來建立和設定資料流程輸出:

CalcPrivateGeometryShaderWithStreamOutput

CreateGeometryShaderWithStreamOutput

SoSetTargets