Table of Contents

リソース バインディング

上級 プログラマー

エフェクトを使った頂点の描画を行う場合、シェーダーは次のような特定のリソースが利用可能であることが期待されます。

  • テクスチャーとバッファ
  • サンプラー
  • 定数バッファ

自動リソースバインディング

EffectInstance クラスは、読み込まれたエフェクトから列挙されるリソースの詳細を処理します。

また、エフェクトは RootSignature を公開しており、これをパイプライン ステートとして設定する必要があります。 そして、ParameterCollection に基づいて、定数バッファを満たし、リソースをバインドすることができます。

コード: EffectInstance を使用する

// EffectInstance を作成しパイプラインの設定に使う
// Create a EffectInstance and use it to set up the pipeline
var effectInstance = new EffectInstance(EffectSystem.LoadEffect("MyEffect").WaitForResult());
pipelineStateDescription.EffectBytecode = effectInstance.Effect.Bytecode;
pipelineStateDescription.RootSignature = effectInstance.RootSignature;

// 定数バッファを更新しリソースをバインドする
// Update constant buffers and bind resources
effectInstance.Apply(context.GraphicsContext);

手動リソースバインディング

さらに最適化されたコードが必要な場合(例:レンダリング パイプライン)、定数バッファの更新とリソースバインディングを手動で行うことができます。