共用方式為


取樣器類型

使用下列語法來宣告取樣器狀態和取樣器比較狀態。

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。 必要關鍵字。

名字

可唯一識別取樣器變數名稱的 ASCII 字串。

[索引]

僅限 Direct3D 10 和更新版本。 選擇性陣列大小;大於或等於 1 的正整數。

SamplerType

[in]取樣器類型,其為下列其中一項: samplersampler1Dsampler2Dsampler3DsamplerCUBEsampler_stateSamplerState

Direct3D 9 和 Direct3D 10 和更新版本之間的差異:

  • Direct3D 10 和更新版本支援一個額外的取樣器類型: SamplerComparisonState

紋理= <texture_variable> ;

僅限 Direct3D 9。 紋理變數。 左側需要 Texture關鍵字;變數名稱位於角括弧內的運算式右側。

state_name = state_value

[in]選擇性狀態指派 () 。 指派的左側是狀態名稱,右側是狀態值。 所有狀態指派都必須出現在語句區塊內, (大括弧) 。 每個語句都會以分號分隔。 下表列出可能的狀態名稱。

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

// sampler-comparison state
ComparisonFunc

每個運算式的右側是指派給每個狀態的值。 如需 Direct3D 11 的可能狀態值 ,請參閱D3D11_SAMPLER_DESC 結構。 狀態名稱和結構成員之間有 1 到 1 的關聯性。 請參閱下列範例。

備註

當您實作效果時,取樣器狀態是您可能需要在管線中設定以進行轉譯的數種狀態類型之一。 如需您可以在效果中設定之所有可能狀態的清單,請參閱:

範例

Direct3D 9 與 Direct3D 10 之間的差異:
以下是 BasicHLSL 範例中 Direct3D 9 取樣器的部分範例。
sampler MeshTextureSampler = 
sampler_state
{
    Texture = <g_MeshTexture>;
    MipFilter = LINEAR;
    MinFilter = LINEAR;
    MagFilter = LINEAR;
};

以下是 BasicHLSL10 Sample中 Direct3D 10 取樣器的部分範例。

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

以下是宣告 sampler-comparison 狀態的部分範例,以及在 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)