Сбор (объект текстуры DirectX HLSL)
Возвращает четыре образца (только красный компонент), которые будут использоваться для билинейной интерполяции при выборке текстуры.
<Тип>шаблона 4 Object.Gather( sampler_state S, float2|3|4 Location [, int2 Offset] );
Параметры
Элемент | Описание | ||||||||
---|---|---|---|---|---|---|---|---|---|
Объекта |
Поддерживаются следующие типы объектов текстуры : Texture2D, Texture2DArray, TextureCube, TextureCubeArray. |
||||||||
S |
[in] Состояние sampler. Это объект, объявленный в файле эффектов, который содержит назначения состояний. |
||||||||
Расположение |
[in] Координаты текстуры. Тип аргумента зависит от типа объекта текстуры.
|
||||||||
Смещение |
[in] Необязательное смещение координат текстуры, которое можно использовать для любого типа объекта текстуры; смещение применяется к расположению перед выборкой. Тип аргумента зависит от типа объекта текстуры. Для шейдеров, предназначенных для модели шейдеров версии 5.0 и более поздних версий, 6 наименее значимых битов каждого значения смещения учитываются как со знаком, что дает диапазон [-32...31]. Для предыдущих шейдеров модели шейдеров смещения должны быть непосредственными целыми числами в диапазоне от –8 до 7.
|
Возвращаемое значение
Четырехкомпонентный вектор с четырьмя компонентами красных данных, тип которых совпадает с типом шаблона текстуры.
Минимальная модель шейдера
Эта функция поддерживается в следующих моделях шейдеров.
vs_4_0 | vs_4_1 | ps_4_0 | ps_4_1 | gs_4_0 | gs_4_1 |
---|---|---|---|---|---|
x | x | x |
- TextureCubeArray доступен в модели шейдеров версии 4.1 или более поздней версии.
- Модель шейдера 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);
}