サンプラーの種類

サンプラーの状態とサンプラー比較の状態を宣言するには、次の構文を使用します。

Direct3D 9 と Direct3D 10 以降の違い:
Direct3D 9 のサンプラーの構文を次に示します。
sampler Name = SamplerType{ Texture = <texture_variable>;[state_name = state_value;]... };

Direct3D 10 以降のサンプラーの構文は、テクスチャ オブジェクトとサンプラー配列をサポートするように若干変更されています。

SamplerType Name[Index]{ [state_name = state_value;] ... };

パラメーター

サンプラー

Direct3D 9 のみ。 必須のキーワード (keyword)。

名前

サンプラー変数名を一意に識別する ASCII 文字列。

[インデックス]

Direct3D 10 以降のみ。 省略可能な配列サイズ。1 以上の正の整数。

SamplerType

[入力]サンプラーの種類。サンプラー、sampler1D、sampler2Dsampler3DsamplerCUBEsampler_state、SamplerState のいずれかです。

Direct3D 9 と Direct3D 10 以降の違い:

  • Direct3D 10 以降では、 SamplerComparisonState という 1 つの追加のサンプラーの種類がサポートされています。

テクスチャ = <texture_variable>;

Direct3D 9 のみ。 テクスチャ変数。 テクスチャ キーワード (keyword)は左側に必要です。変数名は山かっこ内の式の右側に属します。

state_name = state_value

[入力]オプションの状態の割り当て。 割り当ての左側は状態名、右側は状態値です。 すべての状態の割り当ては、ステートメント ブロック内 (中かっこ) 内に含める必要があります。 各ステートメントはセミコロンで区切られます。 次の表に、使用可能な状態名を示します。

// sampler state
AddressU
AddressV
AddressW
BorderColor
Filter
MaxAnisotropy
MaxLOD
MinLOD
MipLODBias

// sampler-comparison state
ComparisonFunc

各式の右側は、各状態に割り当てられた値です。 Direct3D 11 で使用可能な状態値については、 D3D11_SAMPLER_DESC 構造体を参照してください。 状態名と構造体のメンバーの間には、1 から 1 のリレーションシップがあります。 次の例を参照してください。

解説

効果を実装する場合、サンプラーの状態は、レンダリングのためにパイプラインで設定する必要があるいくつかの種類の状態の 1 つです。 効果で設定できる可能性のあるすべての状態の一覧については、次を参照してください。

Direct3D 9 と Direct3D 10 の違い:
BasicHLSL サンプルの Direct3D 9 サンプラーの部分的な例を次に示します。
sampler MeshTextureSampler = 
sampler_state
{
    Texture = <g_MeshTexture>;
    MipFilter = LINEAR;
    MinFilter = LINEAR;
    MagFilter = LINEAR;
};

BasicHLSL10 サンプルの Direct3D 10 サンプラーの部分的な例を次に示します。

SamplerState MeshTextureSampler
{
    Filter = MIN_MAG_MIP_LINEAR;
    AddressU = Wrap;
    AddressV = Wrap;
};

サンプラー比較状態を宣言し、Direct3D 10 で比較サンプラーを呼び出す部分的な例を次に示します。

SamplerComparisonState ShadowSampler
{
   // sampler state
   Filter = COMPARISON_MIN_MAG_LINEAR_MIP_POINT;
   AddressU = MIRROR;
   AddressV = MIRROR;

   // sampler comparison state
   ComparisonFunc = LESS;
};
        
float3 vModProjUV;
  ...
float fShadow = g_ShadowMap.SampleCmpLevelZero( ShadowSampler, vModProjUV.xy, vModProjUV.z);

関連項目

データ型 (DirectX HLSL)