收集 (DirectX HLSL 纹理对象)

获取四个样本 (红色分量,仅在采样纹理时用于双线性内插的) 。

<模板类型>4 Object.Gather ( sampler_state S, float2|3|4 Location [, int2 Offset] ) ;

参数

说明
对象
支持以下 纹理对象 类型:Texture2D、Texture2DArray、TextureCube、TextureCubeArray。
S
[in] 采样器状态。 这是在包含状态分配的效果文件中声明的对象。
位置
[in]纹理坐标。 参数类型依赖于纹理对象类型。
Texture-Object类型 参数类型
Texture2D float2
Texture2DArray、TextureCube float3
TextureCubeArray float4

抵消

[in]可选的纹理坐标偏移量,可用于任何纹理对象类型;在采样之前,偏移量应用于位置。 参数类型依赖于纹理对象类型。 对于面向着色器模型 5.0 及更高版本的着色器,每个偏移值的 6 个最低有效位作为有符号值进行保留,产生 [-32..31] 范围。 对于以前的着色器模型着色器,偏移量必须是介于 -8 和 7 之间的即时整数。

Texture-Object类型 参数类型
Texture2D、Texture2DArray int2
TextureCube、TextureCubeArray 不支持

返回值

一个四分量矢量,具有四个红色数据分量,其类型与纹理的模板类型相同。

最小着色器模型

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

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

示例

Texture2D<int1> Tex2d;
Texture2DArray<int2> Tex2dArray;
TextureCube<int3> TexCube;
TextureCubeArray<float2> TexCubeArray;

SamplerState s;

int4 main (float4 f : SV_Position) : SV_Target
{
    int2 iOffset = int2(2,3);

    int4 i1 = Tex2d.Gather(s, f.xy);
    int4 i2 = Tex2d.Gather(s, f.xy, iOffset);

    int4 i3 = Tex2dArray.Gather(s, f.xyz);
    int4 i4 = Tex2dArray.Gather(s, f.xyz, iOffset);

    int4 i5 = TexCube.Gather(s, f.xyzw);

    float4 f6 = TexCubeArray.Gather(s, f.xyzw);

    return i1+i2+i3+i4+i5+int4(f6);
}
  

Texture-Object