采样器类型

使用以下语法声明采样器状态和采样器比较状态。

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

[in]取样器类型,它是以下类型之一: samplersampler1Dsampler2Dsampler3DsamplerCUBEsampler_stateSamplerState

Direct3D 9 与 Direct3D 10 及更高版本之间的差异:

  • Direct3D 10 及更高版本支持另一种采样器类型: SamplerComparisonState

纹理 = <texture_variable>;

仅限 Direct3D 9。 纹理变量。 纹理关键字 (keyword) 在左侧是必需的;变量名称属于尖括号内表达式的右侧。

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 示例中 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) (数据类型