Поделиться через


Режимы адресации текстур

Приложение Direct3D может назначать координаты текстур любой вершине любого примитива. Как правило, координаты u-и v-текстуры, назначенные вершине, находятся в диапазоне от 0,0 до 1,0 включительно. Однако, назначив координаты текстуры за пределами этого диапазона, можно создать определенные специальные эффекты текстуры. .

Вы управляете тем, что Direct3D делает с координатами текстур, которые находятся за пределами диапазона [0.0, 1.0], задав режим адресации текстур. Например, приложение может задать режим адресации текстур, чтобы текстура была фрагментирована по примитиву.

Direct3D позволяет приложениям выполнять оболочку текстур. См . оболочку текстур.

Включение упаковки текстур эффективно делает координаты текстур за пределами диапазона [0.0, 1.0], а поведение для растеризации таких координат текстур не определено в этом случае. При включении упаковки текстур режимы адресации текстур не используются. Убедитесь, что приложение не указывает координаты текстур ниже 0,0 или выше 1.0 при включении упаковки текстур.

Сводка режимов адресации текстур

Режим адресации текстур Description
Переносить Повторяет текстуру на каждом целочисленном соединении.
Зеркальное отображение Зеркально отражает текстуру на каждой целочисленной границе.
Зажим Зацепляет координаты текстуры с диапазоном [0.0, 1.0]; Режим закладки применяет текстуру один раз, а затем мякает цвет пограничных пикселей.
Цвет границы Использует произвольный цвет границы для любых координат текстуры вне диапазона от 0,0 до 1.0 включительно.

 

Режим упаковки адресов текстуры

Режим адреса текстуры оболочки делает Direct3D повторять текстуру на каждом целочисленном соединении.

Предположим, например, приложение создает квадратный примитив и задает координаты текстуры (0,0,0,0), (0,0,3.0), (3.0,3.0) и (3.0,0.0). При задании режима адресации текстуры значение "Оболочка" приводит к применению текстуры три раза в направлениях u-и v, как показано на следующем рисунке.

иллюстрация текстуры лица, упаковаемой в направление u и v-направление

Контрастирует с указанным ниже режимом адресов текстур зеркального отображения.

Режим адреса зеркальной текстуры

Режим адреса зеркальной текстуры приводит к зеркальным отображениям текстуры в каждой целочисленной границе.

Предположим, например, приложение создает квадратный примитив и задает координаты текстуры (0,0,0,0), (0,0,3.0), (3.0,3.0) и (3.0,0.0). При задании режима адресации текстуры значение "Зеркальное" приводит к применению текстуры в три раза в направлениях u- и v-. Каждая другая строка и столбец, к которым она применяется, является зеркальным изображением предыдущей строки или столбца, как показано на следующем рисунке.

иллюстрация зеркальных изображений в сетке 3x3

Контрастирует с предыдущим режимом адреса текстуры оболочки.

Режим адреса текстуры зажимает

Режим адреса текстуры clamp приводит к тому, что Direct3D зацепляет координаты текстуры с диапазоном [0.0, 1.0]; Режим закладки применяет текстуру один раз, а затем мякает цвет пограничных пикселей.

Предположим, что приложение создает квадратный примитив и назначает координаты текстуры (0,0,0,0), (0,3.0), (3.0,3.0) и (3.0,0,0) вершины примитива. При задании режима адресации текстуры значение "Clamp" приводит к применению текстуры один раз. Цвета пикселей в верхней части столбцов и конца строк расширяются до верхней и правой части примитива соответственно.

На следующем рисунке показана зажатая текстура.

иллюстрация текстуры и зажатой текстуры

Режим адреса текстуры цвета границы

Режим адреса текстуры цвета границы приводит к тому, что Direct3D использует произвольный цвет, известный как цвет границы, для любых координат текстур за пределами диапазона от 0,0 до 1.0 включительно.

На следующем рисунке приложение указывает, что текстура применяется к примитиву с помощью красной границы.

иллюстрация текстуры и текстуры с красной границой

Ограничения устройств

Хотя система обычно разрешает координаты текстур за пределами диапазона 0.0 и 1.0, включительно ограничения оборудования часто влияют на то, насколько далеко за пределами координат текстуры диапазона может быть. Устройство отрисовки сообщает ограничение для полного диапазона координат текстур, разрешенных устройством, при получении возможностей устройства.

Например, если это значение равно 128, координаты входной текстуры должны храниться в диапазоне -128.0 до +128.0. Передача вершин с координатами текстуры за пределами этого диапазона является недопустимым. Это же ограничение применяется к координатам текстуры, созданным в результате автоматического создания координат текстуры и преобразований координат текстуры.

Ограничения повторяющихся текстур могут зависеть от размера текстуры, индексированного координатами текстуры. В этом случае предположим, что измерение текстуры равно 32, а диапазон координат текстур, разрешенных устройством, равен 512, фактический допустимый диапазон координат текстуры должен иметь значение 512/32 = 16, поэтому координаты текстуры для этого устройства должны находиться в диапазоне от –16,0 до +16,0.

Текстуры