示例 (S、float、int、float、uint) 函数 (HLSL 参考)

使用可选值对 Texture2D 进行采样,以固定样本详细级别 (LOD) 值,并返回操作的状态。

注意

需要 着色器模型 5 或更高版本。

 

语法

DXGI_FORMAT Sample(
  in  SamplerState S,
  in  float Location,
  in  int Offset,
  in  float Clamp,
  out uint Status
);

parameters

S [in]

采样器状态。 这是在包含状态分配的效果文件中声明的对象。

位置 [in]

纹理坐标。 参数类型依赖于纹理对象类型。

Texture-Object类型 参数类型
Texture1D FLOAT
Texture1DArray、Texture2D float2
Texture2DArray、Texture3D、TextureCube float3
TextureCubeArray float4

 

偏移量 [in]

可选的纹理坐标偏移量,可用于任何纹理对象类型;偏移量在采样前应用于位置。 纹理偏移量需要是静态的。 参数类型依赖于纹理对象类型。 有关详细信息,请参阅 应用纹理坐标偏移量。

Texture-Object类型 参数类型
Texture1D、Texture1DArray int
Texture2D、Texture2DArray int2
Texture3D int3
TextureCube、TextureCubeArray 不支持

 

Clamp [in]

用于将示例 LOD 值固定到的可选值。 例如,如果为固定值传递 2.0f,请确保没有单个样本访问小于 2.0f 的 mip 级别。

状态 [out]

操作的状态。 无法直接访问状态;而是将状态传递给 CheckAccessFullyMapped 内部函数。 如果相应的“采样”、“收集”“加载”操作中的所有值都访问了平铺资源中的映射磁贴,CheckAccessFullyMapped 将返回 TRUE。 如果从未映射的磁贴中获取任何值, CheckAccessFullyMapped 将返回 FALSE

返回值

纹理格式,它是 DXGI_FORMAT中列出的类型化值之一。

备注

纹理采样使用纹素位置查找纹素值。 在查找之前,可以向位置应用偏移量。 采样器状态包含采样和筛选选项。 此方法可以在像素着色器中调用,但在顶点着色器或几何着色器中不受支持。

仅在整数错误位处使用偏移量;否则,可能会获得不同的结果,具体取决于硬件实现或驱动程序设置。

计算纹素位置

纹理坐标是引用纹理数据的浮点值,也称为规范化纹理空间。 地址环绕模式按此顺序应用, (纹理坐标 + 偏移量 + 环绕模式) 修改 [0...1] 范围之外的纹理坐标。

对于纹理数组,location 参数中的附加值指定纹理数组中的索引。 此索引被视为 (缩放浮点值,而不是标准纹理坐标的规范化空间) 。 转换为整数索引的顺序如下, (浮点数 + 圆到最接近偶数整数 + 固定到数组范围) 。

应用纹理坐标偏移量

偏移参数修改纹素空间中的纹理坐标。 即使纹理坐标是规范化的浮点数,偏移量也会应用整数偏移量。 另请注意,纹理偏移量必须是静态的。

返回的数据格式由纹理格式决定。 例如,如果纹理资源是使用 DXGI_FORMAT_A8B8G8R8_UNORM_SRGB 格式定义的,则采样操作会将采样纹素从 gamma 2.0 转换为 1.0,筛选并将结果写入范围 [0..1] 中的浮点值。

请参阅

示例方法

Texture-Object