采样器类型
使用以下语法声明采样器状态和采样器比较状态。
Direct3D 9 与 Direct3D 10 及更高版本之间的差异: 下面是 Direct3D 9 中采样器的语法。
Direct3D 10 及更高版本中的采样器的语法略有更改,以支持纹理对象和采样器数组。
|
参数
-
采样
-
仅限 Direct3D 9。 必需关键字 (keyword) 。
-
名字
-
唯一标识采样器变量名称的 ASCII 字符串。
-
[索引]
-
仅限 Direct3D 10 及更高版本。 可选数组大小;大于或等于 1 的正整数。
-
SamplerType
-
[in]取样器类型,它是以下类型之一: sampler、 sampler1D、 sampler2D、 sampler3D、 samplerCUBE、 sampler_state、 SamplerState。
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 采样器的部分示例。
下面是 BasicHLSL10 示例中 Direct3D 10 采样器的部分示例。
|
下面是在 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);