Texture オブジェクト

Direct3D 10 では、サンプラーとテクスチャを個別に指定します。テクスチャ サンプリングは、テンプレート テクスチャ オブジェクトを使用して実装されます。 このテンプレート テクスチャ オブジェクトは、特定の形式を持ち、特定の型を返し、いくつかのメソッドを実装します。

Direct3D9 と Direct3D10 の違い:

  • Direct3D 9 では、サンプラーは特定のテクスチャにバインドされます。
  • Direct3D 10 では、テクスチャとサンプラーは独立したオブジェクトです。 各テンプレート テクスチャ オブジェクトは、テクスチャとサンプラーの両方を入力パラメーターとして受け取るテクスチャ サンプリング メソッドを実装します。

すべての関数ですべての形式がサポートされているわけではありません。 そのため、CheckFeatureSupport を使用して、特定の用途でフォーマットがサポートされているかどうかを確認する必要があります。

すべてのテクスチャ オブジェクト (マルチサンプリング オブジェクトを除く) を作成するための構文を次に示します。

Object1 [<Type>] Name;

マルチサンプリング オブジェクト (Texture2DMS および Texture2DMSArray) では、テクスチャ サイズを明示的に指定し、サンプルの数として表す必要があります。

Object2 [<Type, Samples>] Name;

パラメーター

Item 説明
オブジェクト
テクスチャ オブジェクト。 次の型のうちの 1 つでなければなりません。
Object1 型 説明
バッファー Buffer
Texture1D 1D テクスチャ
Texture1DArray 1D テクスチャの配列
Texture2D 2D テクスチャ
Texture2DArray 2D テクスチャの配列
Texture3D 3D テクスチャ
TextureCube キューブのテクスチャ
TextureCubeArray キューブ テクスチャの配列
Object2 型 説明
Texture2DMS 2D マルチサンプリング テクスチャ
Texture2DMSArray 2D マルチサンプリング テクスチャの配列

  1. Buffer 型は、GetDimensions を除くほとんどのテクスチャ オブジェクト メソッドをサポートしています。
  2. TextureCubeArray はシェーダー モデル 4.1 以降で使用できます。
  3. シェーダー モデル 4.1 は、Direct3D 10.1 以降で使用できます。

Type

省略可能。 山かっこで囲まれた任意のスカラー HLSL 型 または ベクター HLSL 型。 既定の型は float4 です。

名前

テクスチャ オブジェクト名を指定する ASCII 文字列。

サンプル

サンプルの数 (1 ~ 128 の範囲)。

例 1

テクスチャ オブジェクトを宣言する例を次に示します。

Texture2D <float4> MyTex;

Texture2DMS <float4, 128> MyMSTex;

テクスチャ オブジェクト メソッド

各テクスチャ オブジェクトは、特定のメソッドを実装します。すべてのメソッドを一覧表示する表を次に示します。 各メソッドのリファレンス ページを参照して、そのメソッドを使用できるオブジェクトを確認してください。

Texture メソッド 説明 vs_4_0 vs_4_1 ps_4_0 ps_4_1 gs_4_0 gs_4_1
CalculateLevelOfDetail LOD を計算し、クランプされた結果を返します。 x
CalculateLevelOfDetailUnclamped LOD を計算し、アンクランプされた結果を返します。 x
Gather テクスチャをサンプリングするときにバイリニア補間に使用される 4 つのサンプル (赤のコンポーネントのみ) を取得します。 x x x
GetDimensions 指定したミップマップ レベルのテクスチャ ディメンションを取得します。 x x x x x x
GetDimensions (MultiSample) 指定したミップマップ レベルのテクスチャ ディメンションを取得します。 x x x
GetSamplePosition 指定したサンプルの位置を取得します。 x x x
積載量 フィルター処理やサンプリングを行わずにデータを読み込みます。 x x x x x x
Load (マルチサンプル) フィルター処理やサンプリングを行わずにデータを読み込みます。 x x x x
サンプル テクスチャをサンプリングします。 x x
SampleBias ミップマップ レベルにバイアス値を適用した後、テクスチャをサンプリングします。 x x
SampleCmp 比較値を使用してサンプルを拒否するテクスチャをサンプリングします。 x x
SampleCmpLevelZero 比較値を使用してサンプルを拒否し、テクスチャをサンプリングします (ミップマップ レベル 0 のみ)。 x x x x x x
SampleGrad グラデーションを使用してテクスチャをサンプリングし、サンプルの位置の計算方法に影響を与えます。 x x x x x x
SampleLevel 指定したミップマップ レベルでテクスチャをサンプリングします。 x x x x x x

返り値の種類

テクスチャ オブジェクト メソッドの戻り値の型は、特に指定しない限り float4 です。ただし、指定された型とサンプル数が常に必要なマルチサンプリング アンチエイリアス テクスチャ オブジェクトは例外です。 戻り値の型は、テクスチャ リソースの種類 (DXGI_FORMAT) と同じです。 つまり、次のいずれかの型になります。

説明
float 32 ビット浮動小数点 (IEEE 浮動小数点との違いについては浮動小数点規則を参照 )
int 32 ビット符号付き整数
unsigned int 32 ビット符号なし整数
snorm -1 ~ 1 の範囲の 32 ビット浮動小数点 (IEEE 浮動小数点との違いについては浮動小数点規則 を参照)
unorm 0 ~ 1 の範囲の 32 ビット浮動小数点 (IEEE 浮動小数点との違いについては浮動小数点規則 を参照)
任意のテクスチャの種類または構造体 返されるコンポーネントの数は、1 ~ 3 の範囲である必要があります。

さらに、戻り値の型には構造体を含む任意のテクスチャ型を指定できますが、1 つのコンポーネントを返す float1 型など、4 個未満のコンポーネントである必要があります。

テクスチャ内の不足しているコンポーネントの既定値

テクスチャ リソースの種類に存在しないコンポーネントの既定値は、アルファ コンポーネント (A) を除くすべてのコンポーネントに対して 0 です。不足している A の既定値は 1 です。 これがシェーダーに表示される方法は、テクスチャ リソースの種類によって異なります。 テクスチャ リソースの種類に実際に存在する最初の型指定されたコンポーネントの形式を受け取ります (RGBA の順序で左から始まります)。 このフォームが UNORM または FLOAT の場合、不足している A の既定値は 1.0f です。 フォームが SINT または UINT の場合、不足している A の既定値は 0x1 です。

たとえば、シェーダーがDXGI_FORMAT_R24_UNORM_X8_TYPELESS テクスチャ リソースの種類を読み取ると、G と B の既定値は 0 で、A の既定値は 1.0f です。シェーダーが DXGI_FORMAT_R16G16_UINT テクスチャ リソースの種類を読み取ると、B の既定値は 0 になり、A の既定値は 0x00000001 されます。シェーダーが DXGI_FORMAT_R16_SINT テクスチャ リソースの種類を読み取ると、G と B の既定値は 0 で、A の既定値は 0x00000001 です。

例 2

テクスチャ メソッドを使用したテクスチャ サンプリングの例を次に示します。

sampler MySamp;
Texture2D <float4> MyTex;
 
float4 main( float2 TexCoords[2] : TEXCOORD ) : SV_Target
{
    return MyTex.Sample( MySamp, TexCoords[0] ));
}

最小シェーダー モデル

このオブジェクトは、次のシェーダー モデルでサポートされています。

シェーダー モデル サポートされています
シェーダー モデル 4 以降のシェーダー モデル はい

関連項目

シェーダー モデル 4