リソース (Direct3D 10)

リソースは、Direct3D パイプラインがアクセスできるメモリー内の領域です。パイプラインが効率よくメモリーにアクセスできるように、パイプラインに提供されるデータ (入力ジオメトリ、シェーダー リソース、テクスチャーなど) は、リソースに格納する必要があります。すべての Direct3D リソースは、2 種類のリソースから取得されます。つまり、バッファーとテクスチャーです。各パイプライン ステージでは最大 128 のリソースをアクティブにできます。

通常、各アプリケーションで多数のリソースが作成されます。リソースの例として、頂点バッファー、インデックス バッファー、定数バッファー、テクスチャー、シェーダー リソースなどがあります。リソースの使用方法を決定するいくつかのオプションがあります。厳密に型が指定されているリソースと、型なしのリソースを作成することができます。また、リソースに読み取りアクセスと書き込みアクセスの両方を許可するかどうかを制御できます。さらに、CPU のみ、GPU のみ、または CPU と GPU の両方がリソースにアクセスできるようにすることができます。通常は、速度と機能のトレードオフがあり、多くの機能をリソースに持たせるほど、パフォーマンスが低下すると考えてください。

アプリケーションでは多数のテクスチャーを使用することが多いので、テクスチャー管理を容易にするために、Direct3D にはテクスチャー配列という概念が導入されています。テクスチャー配列には (型と次元がすべて同じの) 1 つまたは複数のテクスチャーが格納されており、アプリケーション内から、またはシェーダーによってインデックスを作成することができます。テクスチャー配列によって、複数のインデックスがある 1 つのインターフェイスを使用して多数のテクスチャーにアクセスできます。さまざまなテクスチャー タイプを管理するために、必要な数のテクスチャー配列を作成することができます。

アプリケーションで使用するリソースを作成したら、それらを使用するパイプライン ステージに各リソースを接続またはバインドします。そのためには、リソースへのポインターを取得するバインド API を呼び出します。複数のパイプライン ステージが同じリソースにアクセスしなければならないことがあるので、Direct3D 10 にはリソース ビューという概念が導入されています。ビューは、アクセス可能なリソースの部分を示します。m 個のビューまたは 1 つのリソースを作成して、n 個のパイプライン ステージにバインドすることができます。この際、共有リソースのバインド ルールに従うことが前提となります (従っていない場合、コンパイル時にランタイムによってエラーが生成されます)。

リソース ビューは、リソース (テクスチャー、バッファーなど) へのアクセスの一般的なモデルです。ビューを使用して、アクセスするデータやそのデータにアクセスする方法をランタイムに指示できるので、リソース ビューでは型なしのリソースを作成することができます。つまり、コンパイル時に特定のサイズに合わせてリソースを作成し、その後、リソースがパイプラインにバインドされるときにリソース内でデータ型を宣言できます。ビューには、リソースの使用に関する新しい機能が多数あり、たとえば、シェーダーの深度/ステンシル サーフェスを読み戻して、単一パスで動的キューブマップを生成し、ボリュームの複数のスライスに同時にレンダリングすることができます。

基本的なリソース タイプ、テクスチャー配列、およびリソースの作成と使用の方法の詳細については、次のトピックを参照してください。

関連項目

Direct3D 10 プログラミング ガイド