テクスチャー ビュー (Direct3D 10)
Direct3D 10 では、メモリー内のリソースをハードウェア変換するためのメカニズムであるビューを使用して、テクスチャー リソースにアクセスします。ビューを使用することにより、特定のパイプライン ステージが、必要なサブリソースのみに、アプリケーションで必要な形式でアクセスできます。
ビューは、タイプレス リソースの概念をサポートしています。タイプレス リソースとは、特定のサイズで作成された、特定のデータ型ではないリソースです。データは、パイプラインにバインドされる際に動的に変換されます。
ここでは、シェーダー リソース ビューを作成することにより、テクスチャーが 6 つある 2D テクスチャー配列をシェーダー リソースとしてバインドする例を示しています。リソースは、テクスチャーの配列としてアドレス指定されます(注 : サブリソースは、入力と出力の両方で同時にパイプラインにバインドすることはできません)。
図形 1. 6 つの 2D テクスチャーとして表示される Texture2DArray
2D テクスチャー配列をレンダー ターゲットとして使用する際、リソースはミップマップ レベル (この例では 3) がある 2D テクスチャーの配列 (この例では 6) として表示できます。
CreateRenderTargetView を呼び出すことにより、レンダー ターゲットのビュー オブジェクトを作成します。次に、OMSetRenderTargets を呼び出して、レンダー ターゲット ビューをパイプラインに設定します。Draw を呼び出し、RenderTargetArrayIndex を使用して、配列内の適切なテクスチャーにインデックスを設定することにより、レンダー ターゲットに対してレンダリングを行います。サブリソース (ミップマップ レベル、配列インデックスの組み合わせ) を使用して、サブリソースの任意の配列にバインドできます。以下に示すような場合は、この特定のミップマップ レベルを 2 番目のミップマップ レベルにバインドし、更新のみを行うことができます。
図形 2. ビューでサブリソースの配列にアクセス可能
Direct3D 9 と Direct3D 10 の違い
Direct3D 10 では、リソースをパイプラインに直接バインドせず、リソースのビューを作成して、そのビューをパイプラインに設定します。これにより、ビューの作成時にランタイムおよびドライバーで検証とマッピングを行うことが可能になり、バインド時の型のチェックが最小限に抑えられます。 |