ID3D11Device::CreateGeometryShaderWithStreamOutput 方法 (d3d11.h)

建立可寫入串流輸出緩衝區的幾何著色器。

語法

HRESULT CreateGeometryShaderWithStreamOutput(
  [in]            const void                       *pShaderBytecode,
  [in]            SIZE_T                           BytecodeLength,
  [in, optional]  const D3D11_SO_DECLARATION_ENTRY *pSODeclaration,
  [in]            UINT                             NumEntries,
  [in, optional]  const UINT                       *pBufferStrides,
  [in]            UINT                             NumStrides,
  [in]            UINT                             RasterizedStream,
  [in, optional]  ID3D11ClassLinkage               *pClassLinkage,
  [out, optional] ID3D11GeometryShader             **ppGeometryShader
);

參數

[in] pShaderBytecode

類型: const void*

標準幾何著色器加上數據流輸出之已編譯幾何著色器的指標。 如需如何取得此指標的詳細資訊,請參閱 取得已編譯著色器的指標

若要建立數據流輸出而不使用幾何著色器,請將指標傳遞至先前階段的輸出簽章。 若要取得此輸出簽章,請呼叫 D3DGetOutputSignatureBlob 編譯程式函式。 您也可以將指標傳遞給先前階段的編譯著色器 (,例如 頂點著色器階段網域著色器階段) 。 這個編譯的著色器會提供數據的輸出簽章。

[in] BytecodeLength

類型: SIZE_T

已編譯幾何著色器的大小。

[in, optional] pSODeclaration

類型: const D3D11_SO_DECLARATION_ENTRY*

D3D11_SO_DECLARATION_ENTRY陣列的指標。 如果 NumEntries > 0,則不能為 NULL

[in] NumEntries

類型: UINT

數據流輸出宣告中的項目數目 ( 範圍從 0 到 D3D11_SO_STREAM_COUNT * D3D11_SO_OUTPUT_COMPONENT_COUNT ) 。

[in, optional] pBufferStrides

類型: const UINT*

緩衝區步進的陣列;每個步幅都是該緩衝區的專案大小。

[in] NumStrides

類型: UINT

pBufferStride (s 中 (或緩衝區) 的步幅數,範圍從 0 到 D3D11_SO_BUFFER_SLOT_COUNT) 。

[in] RasterizedStream

類型: UINT

要傳送至點陣化階段之數據流的索引編號, (範圍從 0 到 D3D11_SO_STREAM_COUNT - 1) 。 如果未將任何數據流點陣化,請將 設定為 D3D11_SO_NO_RASTERIZED_STREAM。

[in, optional] pClassLinkage

類型: ID3D11ClassLinkage*

類別連結介面的指標 (請參閱 ID3D11ClassLinkage) ;此值可以是 NULL

[out, optional] ppGeometryShader

類型: ID3D11GeometryShader**

ID3D11GeometryShader 介面指標的位址,代表所建立的幾何著色器。 將此設定為 NULL 以驗證其他參數;如果驗證通過,則方法會傳回S_FALSE,而不是S_OK。

傳回值

類型: HRESULT

這個方法會傳回其中一個 Direct3D 11 傳回碼

備註

如需使用 CreateGeometryShaderWithStreamOutput 的詳細資訊,請參閱使用 Stream Output 建立 Geometry-Shader 物件

從 Windows 8 開始提供的 Direct3D 11.1 運行時間提供下列 CreateGeometryShaderWithStreamOutput 的新功能。

下列著色器模型 5.0 指令僅適用於 Direct3D 11.0 運行時間中的圖元著色器和計算著色器。 針對 Direct3D 11.1 執行時間,因為 UAV) (未排序的存取檢視可在所有著色器階段使用,因此您可以在所有著色器階段使用這些指示。

因此,如果您在幾何著色器中使用下列著色器模型 5.0 指令,則可以成功將編譯的幾何著色器傳遞至 pShaderBytecode。 也就是說, CreateGeometryShaderWithStreamOutput 的呼叫會成功。

如果您將編譯的著色器傳遞至 pShaderBytecode ,該程式代碼會在每一個著色器階段使用下列任何指示的裝置上, (包括未實作以支援每個著色器階段的 UAV 的現有驅動程式, ) ,CreateGeometryShaderWithStreamOutput 會失敗。 如果著色器嘗試使用超過硬體支援的一組 UAV 插槽,CreateGeometryShaderWithStreamOutput 也會失敗。

Windows Phone 8:支援此 API。

規格需求

需求
目標平台 Windows
標頭 d3d11.h
程式庫 D3D11.lib

另請參閱

ID3D11Device