Объект текстуры

В Direct3D 10 вы указываете пробы и текстуры независимо друг от друга. Выбор текстуры реализуется с помощью объекта шаблонной текстуры. Этот объект шаблона-текстуры имеет конкретный формат, возвращает конкретный тип и реализует несколько методов.

Различия между Direct3D9 и Direct3D10:

  • В Direct3D 9 пробы привязаны к конкретным текстурам.
  • В Direct3D 10 текстуры и пробы являются независимыми объектами. Каждый объект шаблона текстуры реализует методы выборки текстур, принимающие текстуру и образец в качестве входных параметров.

Ниже приведен синтаксис для создания всех объектов текстуры (за исключением многовыборочных объектов).

[ < > ] Имя типа Object1;

Для многовыборочных объектов (Texture2DMS и Texture2DMSArray) требуется, чтобы размер текстуры был явно указан и выражается в виде числа выборок.

[ < Тип Object2, имя выборки > ] ;

Параметры

Элемент Описание
Объектами
Объект текстуры. Должен иметь один из следующих типов.
Тип Object1 Описание
Буфер Буфер
Texture1D Текстура 1D
Texture1DArray Массив одномерной текстуры
Texture2D Двухмерная текстура
Texture2DArray Массив двумерных текстур
Texture3D Трехмерная текстура
TextureCube Текстура Куба
текстурекубеаррай Массив текстур Куба
Тип Object2 Описание
Texture2DMS Плоская многовыборочная текстура
Texture2DMSArray Массив двумерных текстур с многовыборочной выборкой

  1. Тип буфера поддерживает большинство методов объекта текстуры, за исключением измерений.
  2. Текстурекубеаррай доступен в модели шейдеров 4,1 или более поздней версии.
  3. Модель шейдеров 4,1 доступна в Direct3D 10,1 или более поздней версии.

Тип

Необязательный элемент. Любой скалярный тип HLSL или тип HLSL Vector, заключенный в угловые скобки. Тип по умолчанию — float4.

Безымян

Строка ASCII, указывающая имя объекта текстуры.

Регистрируют

Число выборок (диапазоны от 1 до 128).

Пример 1

Ниже приведен пример объявления объекта текстуры.

Texture2D <float4> MyTex;

Texture2DMS <float4, 128> MyMSTex;

Методы объекта текстуры

Каждый объект текстуры реализует определенные методы; Ниже приведена таблица, в которой перечислены все методы. Чтобы узнать, какие объекты могут использовать этот метод, см. справочную страницу по каждому из методов.

Метод текстуры Описание VS _ 4 _ 0 VS _ 4 _ 1 PS _ 4 _ 0 PS _ 4 _ 1 GS _ 4 _ 0 GS _ 4 _ 1
калкулателевелофдетаил Вычислите Лод, возвращая результат с фиксацией. x
калкулателевелофдетаилунклампед Вычислите Лод, возвращая несрезный результат. x
Собрать Получает четыре образца (только красный компонент), которые будут использоваться для интерполяции билинейной при выборке текстуры. x x x
GetDimensions Возвращает измерение текстуры для указанного уровня mipmap. x x x x x x
Измерения (многопримерные) Возвращает измерение текстуры для указанного уровня mipmap. x x x
жетсамплепоситион Возвращает расположение указанного образца. x x x
Загрузить Загрузка данных без фильтрации или выборки. x x x x x x
Загрузка (многовыборочная) Загрузка данных без фильтрации или выборки. x x x x
Образец Пример текстуры. x x
самплебиас Пример текстуры после применения значения смещения к уровню mipmap. x x
самплекмп Пример текстуры с использованием значения сравнения для отклонения выборок. x x
SampleCmpLevelZero Пример текстуры (только для mipmap уровня 0) с использованием значения сравнения для отклонения выборок. x x x x x x
самплеград Пример текстуры с помощью градиента, влияющей на способ вычисления расположения образца. x x x x x x
SampleLevel Пример текстуры на указанном уровне mipmap. x x x x x x

Тип возвращаемых данных

Тип возвращаемого значения для метода объекта текстуры — float4, если не указано иное, за исключением объектов текстур с несколькими примерами, которые всегда требуют указания типа и числа выборки. Тип возвращаемого значения совпадает с типом ресурса текстуры (_ Формат DXGI). Иными словами, это может быть любой из следующих типов.

Тип Описание
FLOAT 32-разрядное число с плавающей запятой (см. раздел правила с плавающей запятой для отличий от IEEE float)
INT 32-битное целое число со знаком
unsigned int 32-битное целое число без знака
снорм 32-разрядное число с плавающей запятой в диапазоне от 1 до 1 включительно (см. раздел правила с плавающей запятой для отличий от IEEE float).
unorm 32-bit float в диапазоне от 0 до 1 включительно (см. раздел правила с плавающей запятой для отличий от IEEE float)
любой тип или структура текстуры Число возвращаемых компонентов должно быть в диапазоне от 1 до 3 включительно.

Кроме того, тип возвращаемого значения может быть любым типом текстуры, включая структуру, но он должен быть меньше 4 компонентов, например типа float1, возвращающего один компонент.

Значения по умолчанию для отсутствующих компонентов в текстуре

Значение по умолчанию для отсутствующих компонентов в типе ресурса текстуры равно нулю для любого компонента, кроме альфа-компонента (A); значение по умолчанию для отсутствующего A равно единице. Способ, которым этот элемент появляется в шейдере, зависит от типа ресурса текстуры. Он принимает форму первого типизированного компонента, который фактически содержится в типе ресурса текстуры (начиная слева в порядке RGBA). Если это форма UNORM или FLOAT, значение по умолчанию для отсутствующего A равно 1,0 f. Если форма имеет вид Синт или UINT, значением по умолчанию для Missing является 0x1.

Например, когда шейдер считывает тип ресурса текстуры _ _ R24 _ UNORM _ x8 _ типа DXGI , значения по умолчанию для G и B равны нулю, а значение по умолчанию — 1,0 f; когда шейдер считывает тип ресурса текстуры _ _ R16G16 _ uint в формате DXGI , значение по умолчанию для B равно нулю, а значение по умолчанию — 0X00000001; когда шейдер считывает тип ресурса текстуры _ _ R16 _ Синт в формате DXGI , значения по умолчанию для G и B равны нулю, а значение по умолчанию — 0x00000001.

Пример 2

Ниже приведен пример выборки текстуры с помощью метода текстуры.

sampler MySamp;
Texture2D <float4> MyTex;
 
float4 main( float2 TexCoords[2] : TEXCOORD ) : SV_Target
{
    return MyTex.Sample( MySamp, TexCoords[0] ));
}

Минимальная модель шейдера

Этот объект поддерживается в следующих моделях шейдеров.

Модель шейдера Поддерживается
Модели шейдеров 4 и более поздних шейдеров yes

См. также раздел

Модель шейдера 4