SampleLevel (DirectX HLSL 纹理对象)

使用 mipmap 级别偏移量对纹理采样。

<Template Type> Object.SampleLevel ( sampler_state S, float Location, float LOD [, int Offset] ) ;

此函数类似于 Sample ,只不过它使用位置参数) 的最后一个组件中的 LOD 级别 (来选择 mipmap 级别。 例如,2D 纹理将前两个分量用于 uv 坐标,第三个分量用于 mipmap 级别。

parameters

说明
对象
除 Texture2DMS 和 Texture2DMSArray 之外的任何 纹理对象 类型 () 。
S
[in] 采样器状态。 这是在包含状态分配的效果文件中声明的对象。
位置
[in]纹理坐标。 参数类型依赖于纹理对象类型。
Texture-Object类型 参数类型
Texture1D FLOAT
Texture1DArray、Texture2D float2
Texture2DArray、Texture3D、TextureCube float3
TextureCubeArray float4

如果纹理对象是数组,则最后一个组件是数组索引。

Lod

[in]一个指定 mipmap 级别的数字。 如果值为 = 0,则使用最大映射) (零。 如果使用提供的) 在两个 mipmap 级别之间内插,则小数部分值 (。

抵消

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

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

返回值

纹理的模板类型,可以是单分量或多分量向量。 格式基于纹理的 DXGI_FORMAT

最小着色器模型

以下着色器模型中支持此函数。

vs_4_0 vs_4_1 ps_4_0 ps_4_1 gs_4_0 gs_4_1
x x x x x x
  1. TextureCubeArray 在着色器模型 4.1 或更高版本中可用。
  2. 着色器模型 4.1 在 Direct3D 10.1 或更高版本中可用。

示例

此部分代码示例来自 Instancing10 示例中的 Instancing.fx 文件。

// Object Declarations
Texture1D g_txRandom;

SamplerState g_samPoint
{
    Filter = MIN_MAG_MIP_POINT;
    AddressU = Wrap;
    AddressV = Wrap;
};

    
// Shader body calling the intrinsic function
float3 RandomDir(float fOffset)
{   
    float tCoord = (fOffset) / 300.0;
    return g_txRandom.SampleLevel( g_samPoint, tCoord, 0 );
   ...

Texture-Object