Gather (objeto de textura HLSL directx)
Obtém as quatro amostras (somente componente vermelho) que seriam usadas para interpolação bilinear ao amostrar uma textura.
<Objeto tipo>de modelo 4.Gather( sampler_state S, float2|3|4 Local [, deslocamento int2] );
Parâmetros
Item | Descrição | ||||||||
---|---|---|---|---|---|---|---|---|---|
Objeto |
Há suporte para os seguintes tipos de objeto de textura : Texture2D, Texture2DArray, TextureCube, TextureCubeArray. |
||||||||
S |
[in] Um estado sampler. Esse é um objeto declarado em um arquivo de efeito que contém atribuições de estado. |
||||||||
Localização |
[in] As coordenadas de textura. O tipo de argumento depende do tipo de objeto de textura.
|
||||||||
Deslocamento |
[in] Um deslocamento de coordenada de textura opcional, que pode ser usado para qualquer tipo de objeto de textura; o deslocamento é aplicado ao local antes da amostragem. O tipo de argumento depende do tipo de objeto de textura. Para sombreadores direcionados ao Modelo de Sombreador 5.0 e superior, os 6 bits menos significativos de cada valor de deslocamento são respeitados como um valor assinado, gerando o intervalo [-32..31]. Para sombreadores de modelo de sombreador anteriores, os deslocamentos precisam ser inteiros imediatos entre -8 e 7.
|
Valor Retornado
Um vetor de quatro componentes, com quatro componentes de dados vermelhos, cujo tipo é o mesmo que o tipo de modelo da textura.
Modelo de sombreador mínimo
Essa função tem suporte nos modelos de sombreador a seguir.
vs_4_0 | vs_4_1 | ps_4_0 | ps_4_1 | gs_4_0 | gs_4_1 |
---|---|---|---|---|---|
x | x | x |
- TextureCubeArray está disponível no Modelo de Sombreador 4.1 ou superior.
- O Modelo de Sombreador 4.1 está disponível no Direct3D 10.1 ou superior.
Exemplo
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);
}