Stream-Output階段

資料流程輸出階段的目的是要從 geometry 著色器階段 (或頂點著色器階段持續輸出 (或串流) 頂點資料,如果 geometry-shader 階段是非使用中) 到記憶體中的一或多個緩衝區, (請參閱消費者入門與Stream-Output階段) 。

資料流程輸出階段 (SO) 位於幾何著色器階段之後的管線中,而位於點陣化階段之前,如下圖所示。

在管線中資料流輸出階段的位置圖

串流輸出到記憶體的資料可在後續轉譯行程中讀回到管線,或者可以複製到預備環境資源(讓它可供 CPU 讀取)。 串流出的資料量可能會有所不同; ID3D11DeviceCoNtext::D rawAuto API 的設計目的是要處理資料,而不需要查詢 GPU () 寫入的資料量。

當三角形或折線帶系結至輸入組合器階段時,每個帶都會在串流出之前轉換成清單。頂點一律會寫成完整的基本類型 (,例如,三角形一次 3 個頂點) ;未完成的基本類型永遠不會串流出。在串流資料輸出之前,具有相鄰性的基本類型會捨棄相鄰資料。

有兩種方式可將資料流輸出資料饋送至管線:

  • 資料流程輸出資料可以送回輸入組合器階段。
  • 您可以使用載入函式 (,例如 Load) ,透過可程式化著色器讀取資料流程輸出資料。

若要使用緩衝區作為資料流程輸出資源,請使用 D3D11_BIND_STREAM_OUTPUT 旗標建立緩衝區。 資料流輸出階段同時支援最多 4 個緩衝區。

  • 如果您要串流資料到多個緩衝區,每個緩衝區只可以擷取每個頂點資料的單一元素(最多 4 個元件),隱含的資料分散等於每個緩衝區中的元素寬度(相容於單一元素可繫結以供輸入到著色器階段的方式)。 此外,如果緩衝區有不同的大小,其中一個緩衝區已滿時寫入會立即停止。
  • 如果您要串流資料到單一緩衝區,緩衝區可以擷取每個頂點資料最多 64 個純量元件 (256 位元組或更少),或者頂點分散可能是 2048 位元組。

本節內容

主題 描述
使用Stream-Output階段消費者入門
本節說明如何搭配資料流程輸出階段使用幾何著色器。

圖形管線

Direct3D 10 () 的管線階段