参考資料Resources

リソースは、Direct3D パイプラインからアクセスできるメモリ内の領域です。A resource is an area in memory that can be accessed by the Direct3D pipeline. パイプラインでメモリに効率的にアクセスするには、パイプラインに渡すデータ (入力ジオメトリ、シェーダー リソース、テクスチャなど) をリソースに格納する必要があります。In order for the pipeline to access memory efficiently, data that is provided to the pipeline (such as input geometry, shader resources, and textures) must be stored in a resource. すべての Direct3D リソースの派生元となるリソースは 2 種類あります。バッファーとテクスチャです。There are two types of resources from which all Direct3D resources derive: a buffer or a texture. 各パイプライン ステージでは最大 128 個のリソースをアクティブにできます。Up to 128 resources can be active for each pipeline stage.

通常、アプリケーションごとに多数のリソースが作成されます。Each application will typically create many resources. リソースの例として、頂点バッファー、インデックス バッファー、定数バッファー、テクスチャ、シェーダー リソースなどがあります。Examples of resource include: vertex buffers, index buffer, constant buffer, textures, and shader resources. リソースの使用方法を決めるオプションはいくつか存在します。There are several options that determine how resources can be used. 厳密に型指定されたリソースを作成するか、型指定のないリソースを作成することができます。また、リソースで読み取りアクセスと書き込みアクセスの両方を可能にするかどうかも制御できます。さらに、CPU のみ、GPU のみ、またはその両方からリソースにアクセスできるようにすることも可能です。You can create resources that are strongly typed or type less; you can control whether resources have both read and write access; you can make resources accessible to only the CPU, GPU, or both. 当然ながら、速度と機能はトレードオフの関係にあります。つまり、多くの機能をリソースに許可するほど、予想されるパフォーマンスが低下します。Naturally, there will be speed vs. functionality tradeoff - the more functionality you allow a resource to have, the less performance you should expect.

アプリケーションでは多数のテクスチャを使用することが多いので、Direct3D にはテクスチャ管理を簡略化するテクスチャ配列という概念も用意されています。Since an application often uses many textures, Direct3D also has the concept of a texture array to simplify texture management. テクスチャ配列には (型とサイズがすべて同じである) 1 つ以上のテクスチャが格納されており、アプリケーション内から、またはシェーダーでインデックスを作成できます。A texture array contains one or more textures (all of the same type and dimensions) that can be indexed from within an application or by shaders. テクスチャ配列により、複数のインデックスを持つ 1 つのインターフェイスを使用して多数のテクスチャにアクセスすることができます。Texture arrays allow you to use a single interface with multiple indexes to access many textures. さまざまなテクスチャの種類を管理するために、テクスチャ配列は必要なだけ作成可能です。You can create as many texture arrays to manage different texture types as you need.

アプリケーションで使用するリソースを作成したら、それらを使用するパイプライン ステージに各リソースを接続またはバインドします。Once you have created the resources that your application will use, you connect or bind each resource to the pipeline stages that will use them. これは、リソースへのポインターを受け取るバインド API を呼び出すことで実行します。This is accomplished by calling a bind API, which takes a pointer to the resource. 複数のパイプライン ステージで同じリソースにアクセスしなければならない場合があるため、Direct3D にはリソース ビューという概念が用意されています。Since more than one pipeline stage may need access to the same resource, Direct3D has the concept of a resource view. ビューは、リソースのうち、アクセス可能な部分を識別します。A view identifies the portion of a resource that can be accessed. m 個のビューまたは 1 つのリソースを作成して、n 個のパイプライン ステージにバインドすることができます。この際、共有リソースのバインド規則に従うことが前提となります (従わなければコンパイル時にランタイムでエラーが発生します)。You can create m views or a resource and bind them to n pipeline stages, assuming you follow binding rules for shared resource (the runtime will generate errors at compile time if you don't).

リソース ビューは、リソース (テクスチャやバッファーなど) にアクセスするための一般的なモデルです。A resource view provides a general model for access to a resource (such as textures or buffers). ビューを使用すると、アクセスするデータやデータへのアクセス方法をランタイムに対して指示できます。そのため、リソース ビューを使うことで、型指定なしのリソースを作成できるようになります。Because you can use a view to tell the runtime what data to access and how to access it, resource views allow you create type less resources. つまり、コンパイル時に特定のサイズのリソースを作成し、その後、リソースがパイプラインにバインドされるときにリソース内でデータ型を宣言できます。That is, you can create resources for a given size at compile time, and then declare the data type within the resource when the resource gets bound to the pipeline. ビューは、リソースを使用するための多数の機能を公開します。たとえば、シェーダーで深度/ステンシル サーフェスを読み返して、1 つのパスで動的なキューブマップを生成し、ボリュームの複数のスライスに同時にレンダリングすることができます。Views expose many capabilities for using resources, such as the ability to read back depth/stencil surfaces in the shader, generating dynamic cubemaps in a single pass, and rendering simultaneously to multiple slices of a volume.

このセクションの内容In this section

トピックTopic 説明Description

リソースの種類Resource types

リソースの種類によって、レイアウト (またはメモリ使用量) はそれぞれ異なります。Different types of resources have a distinct layout (or memory footprint). Direct3D パイプラインで使用されるリソースはすべて、2 つの基本的なリソースの種類であるバッファーテクスチャから派生したものです。All resources used by the Direct3D pipeline derive from two basic resource types: buffers and textures. バッファーは未加工データ (要素) のコレクションで、テクスチャはテクセル (テクスチャ要素) のコレクションです。A buffer is a collection of raw data (elements); a texture is a collection of texels (texture elements).

リソースを選択します。Choosing a resource

リソースは、3D パイプラインで使用されるデータのコレクションです。A resource is a collection of data that is used by the 3D pipeline. リソースを作成してその動作を定義することが、アプリケーションをプログラミングするための第一歩になります。Creating resources and defining their behavior is the first step toward programming your application. このガイドでは、アプリケーションで必要なリソースの選択に関する基本的なトピックについて説明します。This guide covers basic topics for choosing the resources required by your application.

コピーと、リソースのデータにアクセスします。Copying and accessing resource data

使用法フラグは、アプリケーションがリソース データをどのように使用するかを示し、リソースを可能な限りメモリのパフォーマンスの高い領域に配置します。Usage flags indicate how the application intends to use the resource data, to place resources in the most performant area of memory possible. リソース データはリソース間でコピーされ、CPU または GPU がパフォーマンスに影響を与えることなくリソースにアクセスできるようにします。Resource data is copied across resources so that the CPU or GPU can access it without impacting performance.

テクスチャ ビューTexture views

Direct3D では、ビューを使ってテクスチャ リソースにアクセスします。ビューは、メモリ内のリソースをハードウェアで解釈するためのメカニズムです。In Direct3D, texture resources are accessed with a view, which is a mechanism for hardware interpretation of a resource in memory. ビューを使うと、アプリケーションで要求される表現で、特定のパイプライン ステージから必要なサブリソースだけにアクセスできるようになります。A view allows a particular pipeline stage to access only the subresources it needs, in the representation desired by the application.

 

関連トピックRelated topics

座標系Coordinate systems

Direct3D グラフィックス学習ガイドDirect3D Graphics Learning Guide

浮動小数点の規則Floating-point rules

データ型の変換Data type conversion