加载 (DirectX HLSL 纹理对象)

读取纹素数据,无需任何筛选或采样。

ret Object.Load (
typeX Location、
[typeX SampleIndex, ]
[typeX Offset ]
);

typeX 表示有四种可能的类型: intint2int3int4

 

parameters

对象

纹理对象类型 (TextureCube 或 TextureCubeArray) 除外。

位置

[in]纹理坐标;最后一个组件指定 mipmap 级别。 此方法使用从 0 开始的坐标系,而不是 0.0-1.0 UV 系统。 参数类型依赖于纹理对象类型。

对象类型 参数类型
Buffer int
Texture1D、Texture2DMS int2
Texture1DArray、Texture2D、Texture2DMSArray int3
Texture2DArray、Texture3D int4

 

例如,若要访问 2D 纹理,请为前两个分量提供整数纹素坐标,为第三个分量提供 mipmap 级别。

注意

Location 中的一个或多个坐标超过纹理的 u、v 或 w mipmap 级别尺寸时, Load 在所有分量中返回零。 Direct3D 保证为超出边界访问的任何资源返回零。

 

SampleIndex

[in]采样索引。 对于多样本纹理是必需的。 不支持其他纹理。

纹理类型 参数类型
Texture1D、Texture1DArray、Texture2D、Texture2DArray、Texture3D、Texture2DArray、TextureCube、TextureCubeArray 不支持
Texture2DMS、Texture2DMSArray¹ int

抵消

[in]采样前应用于纹理坐标的可选偏移量。 偏移类型取决于纹理对象类型,并且需要是静态的。

纹理类型 参数类型
Texture1D、Texture1DArray int
Texture2D、Texture2DArray、Texture2DMS、Texture2DMSArray int2
Texture3D int3

 

注意

必须始终首先使用多样本纹理指定 SampleIndex

 

返回值

返回类型与 Object 声明中的类型匹配。 例如,声明为“Texture2d<uint4> myTexture;”的 Texture2D 对象具有 uint4 类型的返回值。

最小着色器模型

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

vs_4_0 vs_4_1¹ ps_4_0 ps_4_1¹ gs_4_0 gs_4_1¹
x x x x x x

 

  • 着色器模型 4.1 在 Direct3D 10.1 或更高版本中可用。

示例

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

// Object Declarations
Buffer<float4> g_ParticleBuffer;

// Shader body calling the intrinsic function
float4 PSPaint(PSQuadIn input) : SV_Target
{       
    ... 
    for( int i=g_ParticleStart; i<g_NumParticles; i+=g_ParticleStep )
    {
        ... 
        // load the particle
        float4 particlePos = g_ParticleBuffer.Load( i*4 );
        float4 particleColor = g_ParticleBuffer.Load( (i*4) + 2 );
        ...     
    }
    ...
}   

Texture-Object