ID3D11DeviceCoNtext::GSSetConstantBuffers 方法 (d3d11.h)

設定幾何著色器管線階段所使用的常數緩衝區。

語法

void GSSetConstantBuffers(
  [in]           UINT         StartSlot,
  [in]           UINT         NumBuffers,
  [in, optional] ID3D11Buffer * const *ppConstantBuffers
);

參數

[in] StartSlot

類型: UINT

索引到裝置的以零起始的陣列,開始將常數緩衝區設定為 (從 0 到 D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1) 的範圍。

[in] NumBuffers

類型: UINT

要設定 (範圍從 0 到D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot) 的緩衝區數目。

[in, optional] ppConstantBuffers

類型: ID3D11Buffer*

常數緩衝區的陣列 (請參閱 ID3D11Buffer) 提供給裝置。

傳回值

備註

方法會保存傳入之介面的參考。 這與 Direct3D 10 中的裝置狀態行為不同。

您無法使用 ID3D11ShaderReflectionConstantBuffer 介面來取得裝置內容中目前系結至管線的相關資訊。 但您可以使用 ID3D11ShaderReflectionConstantBuffer 從編譯的著色器取得資訊。 例如,您可以使用 ID3D11ShaderReflectionConstantBufferID3D11ShaderReflectionVariable 來判斷幾何著色器預期常數緩衝區的位置。 然後,您可以將此位置號碼傳遞至 GSSetConstantBuffers 以設定常數緩衝區。 您可以呼叫 D3D11Reflect 函式來擷取 ID3D11ShaderReflection 介面的指標位址,然後呼叫 ID3D11ShaderReflection::GetConstantBufferByName 來取得 ID3D11ShaderReflectionConstantBuffer 的指標。

從 Windows 8 開始提供的 Direct3D 11.1 執行時間可以將大量的 ID3D11Buffer 資源系結至著色器,比著色器支援的常數緩衝區大小上限 (4096 常數 –每個) 4 32 位元件。當您系結這類大型緩衝區時,著色器只能存取緩衝區中的前 4096 432 位元件常數,就像 4096 常數是緩衝區的完整大小一樣。

如果應用程式想要著色器存取緩衝區的其他部分,則必須改為呼叫 GSSetConstantBuffers1 方法。

規格需求

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

另請參閱

ID3D11DeviceContext