テクスチャ ビュー (Direct3D 10)

Direct3D 10 では、テクスチャ リソースにビューを使用してアクセスします。これは、メモリ内のリソースのハードウェア解釈のメカニズムです。 ビューを使うと、アプリケーションで要求される表現で、特定のパイプライン ステージから必要なサブリソースだけにアクセスできるようになります。

ビューでは、型のないリソースの概念がサポートされています。 型のないリソースは、特定のサイズで作成されるリソースですが、特定のデータ型ではありません。 データは、パイプラインにバインドされるときに動的に解釈されます。

次の図は、2D テクスチャ配列のシェーダー リソース ビューを作成することで、その配列をシェーダー リソースとして 6 つのテクスチャとバインドする例を示しています。 その後、リソースはテクスチャの配列として扱われます。 (注: サブリソースを入力および出力の両方で、パイプラインに同時にバインドすることはできません)。

6 つのテクスチャを含むテクスチャ配列の図

レンダー ターゲットとしてを 2D テクスチャ配列を使うと、リソースは複数のミップマップ レベル (この例では 3 レベル) の 2D テクスチャ (この例では 6 個) の配列として表示することができます。

CreateRenderTargetView を呼び出して、レンダー ターゲットのビュー オブジェクトを作成します。 そして、OMSetRenderTargets を呼び出して、レンダー ターゲット ビューをパイプラインに設定します。 Draw を呼び出し、RenderTargetArrayIndex を使用して配列内の適切なテクスチャへのインデックスを設定することで、レンダー ターゲットにレンダリングします。 サブリソース (ミップマップ レベル、配列インデックスの組み合わせ) を使用して、サブリソースの任意の配列にバインドできます。 次の図に示すように、2 番目のミップマップ レベルにバインドし、その特定のミップマップ レベルだけを更新することもできます。

テクスチャ配列の 2 番目のミップマップ レベルにのみバインドしている図

Direct3D 9 と Direct3D 10 の違い:

  • Direct3D 10 では、リソースをパイプラインに直接バインドしなくなり、リソースのビューを作成し、そのビューをパイプラインに設定します。 これにより、ランタイムとドライバーの検証とマッピングをビューの作成時に行い、バインド時の型チェックを最小限に抑えることができます。

 

リソース (Direct3D 10)