次の方法で共有


ID3D11DeviceContext::GSSetConstantBuffers メソッド (d3d11.h)

ジオメトリ シェーダー パイプライン ステージで使用される定数バッファーを設定します。

構文

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

パラメーター

[in] StartSlot

型: UINT

定数バッファーの設定を開始するには、デバイスの 0 から始まる配列にインデックスを付けます (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 ランタイムでは、シェーダーでサポートされている最大定数バッファー サイズ (4096 定数 – 4 32 ビット コンポーネント) よりも多くの ID3D11Buffer リソースをシェーダーにバインドできます。このような大きなバッファーをバインドすると、シェーダーはバッファー内の最初の 4096 432 ビット コンポーネント定数にのみアクセスできます。たとえば、4096 定数がバッファーのフル サイズであるかのようにします。

アプリケーションでシェーダーがバッファーの他の部分にアクセスできるようにする場合は、代わりに GSSetConstantBuffers1 メソッドを 呼び出す必要があります。

必要条件

   
対象プラットフォーム Windows
ヘッダー d3d11.h
Library D3D11.lib

関連項目

ID3D11DeviceContext