BasicCompute11 サンプル
パス
ソース | SDK ルート\Samples\C++\Direct3D11\BasicCompute11 |
実行可能ファイル | SDK ルート\Samples\C++\Direct3D11\Bin\x86 または x64\BasicCompute11.exe |
サンプルの概要
このサンプルでは、array A + array B を実装することによって、DirectX11 コンピュート シェーダーの基本的な使用方法を示します。
サンプルが動作するしくみ
コンピュート シェーダー (CS) のセットアップは、次の手順で行います。
D3D11 デバイスおよびコンテキストを作成します。作成したデバイスの機能レベルをチェックしてください。システムにインストールされているグラフィック カードに応じて、次の可能性があります。
- FL11 デバイスが作成された場合、コンピュート シェーダー 5.0 のすべての機能を利用できます。
- 一方、FL10 または FL10.1 デバイスが作成された場合、コンピュート シェーダー 4.0/4.1 を利用できる可能性があります。これは、CS4.0/4.1 がほとんどの DirectX 10 カードで利用できるとはいえ、そうでない場合もあるためです。CheckFeatureSupport を呼び出すと、CS4.0/4.1 が利用可能かどうかを確認できます。その実行方法については、サンプル コードを参照してください。
- FL9.x デバイスが作成された場合、コンピュート シェーダーは利用できません。
コンピュート シェーダーをコンパイルして作成します。
コンピュート シェーダーの入力リソースを作成し、データを書き込みます。array A + array B を実行するので、入力リソースとして 2 つのバッファーを作成します。
両方の入力バッファー リソースに対して SRV (シェーダー リソース ビュー) を作成します。シェーダー リソース ビューは、入力リソースをシェーダーにバインドするために使用します。
コンピュート シェーダーの出力リソースを作成します。
出力リソースに対して UAV (順序なしアクセス ビュー) を作成します。順序なしアクセス ビューは、出力リソースをコンピュート シェーダーにバインドするために使用します。CS4.0/4.1 では、コンピュート シェーダーに 1 度に 1 つの出力リソースしかバインドできません。CS5.0 では、この制限はありません。
Dispatch を呼び出して、コンピュート シェーダーを実行します。