リソース (Direct3D 10)

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

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

アプリケーションでは多くのテクスチャが使用されることが多いため、Direct3D ではテクスチャ管理を簡略化するためのテクスチャ配列の概念も導入されています。 テクスチャ配列には (型とサイズがすべて同じである) 1 つ以上のテクスチャが格納されており、アプリケーション内から、またはシェーダーでインデックスを作成できます。 テクスチャ配列により、複数のインデックスを持つ 1 つのインターフェイスを使用して多数のテクスチャにアクセスすることができます。 さまざまなテクスチャの種類を管理するために、テクスチャ配列は必要なだけ作成可能です。

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

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

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

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