加载 (DirectX HLSL 纹理对象)
读取纹素数据,无需任何筛选或采样。
ret Object.Load (
[typeX SampleIndex, ] [typeX Offset ] |
typeX 表示有四种可能的类型: int、 int2、 int3 或 int4。
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 );
...
}
...
}
相关主题