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

Приложение Direct3D может назначать координаты текстуры любым вершинам любого примитива.Your Direct3D application can assign texture coordinates to any vertex of any primitive. Как правило U- и V-координаты текстур, назначаемых вершине, находятся в диапазоне от 0,0 до 1,0 включительно.Typically, the u- and v-texture coordinates that you assign to a vertex are in the range of 0.0 to 1.0 inclusive. Однако назначая координаты текстуры вне этого диапазона, можно создавать некоторые специальные эффекты текстурирования.However, by assigning texture coordinates outside that range, you can create certain special texturing effects. ..

Вы управляете, что делает Direct3D по координатам текстуры, которые находятся за пределами [0.0, 1.0] диапазон, задав режим адресации текстуры.You control what Direct3D does with texture coordinates that are outside the [0.0, 1.0] range by setting the texture addressing mode. Например, приложение может задать режим адресации текстур, чтобы текстура разместилась на примитиве мозаикой.For instance, you can have your application set the texture addressing mode so that a texture is tiled across a primitive.

Direct3D позволяет приложениям выполнять обтекание текстур.Direct3D enables applications to perform texture wrapping. См. раздел Обтекание текстурSee Texture wrapping.

При включении текстуры, эффективно упаковки становится координат текстуры за пределы [0.0, 1.0] недопустимый диапазон, а также поведение для растрирования такие координаты текстуры оплачен не определен в этом случае.Enabling texture wrapping effectively makes texture coordinates outside the [0.0, 1.0] range invalid, and the behavior for rasterizing such delinquent texture coordinates is undefined in this case. При включении обтекания текстур режимы адресации текстур не используются.When texture wrapping is enabled, texture addressing modes are not used. Следите за тем, чтобы приложение не указывало координаты текстуры меньше 0.0 или больше 1.0 при включенном обтекании текстур.Take care that your application does not specify texture coordinates lower than 0.0 or higher than 1.0 when texture wrapping is enabled.

Сводка по адресации текстурыSummary of the texture addressing modes

Режим адресации текстурTexture addressing mode ОписаниеDescription
Обертывание (Wrap)Wrap Повторяет текстуру при каждом пересечении целых чисел.Repeats the texture on every integer junction.
Зеркальное отображениеMirror Зеркально отражает текстуру у каждой целочисленной границы.Mirrors the texture at every integer boundary.
Закрепление (Clamp)Clamp Clamps текстура координирует для [0.0, 1.0] диапазон; Режим выполняют приведение применяется текстуры один раз, а затем smears цвет пикселей edge.Clamps your texture coordinates to the [0.0, 1.0] range; Clamp mode applies the texture once, then smears the color of edge pixels.
Цвет рамки (Border color)Border Color Использует произвольный цвет рамки для любых координат текстуры вне диапазона от 0.0 до 1.0 включительно.Uses an arbitrary border color for any texture coordinates outside the range of 0.0 through 1.0, inclusive.

 

Режим адреса текстуры по словамWrap texture address mode

В режиме адресации текстур Wrap (обертывание) Direct3D повторяет текстуру при каждом пересечении целых чисел.The Wrap texture address mode makes Direct3D repeat the texture on every integer junction.

Предположим, например, что приложение создает квадратный примитив и задает координаты текстуры (0.0,0.0), (0.0,3.0), (3.0,3.0) и (3.0,0.0).Suppose, for example, your application creates a square primitive and specifies texture coordinates of (0.0,0.0), (0.0,3.0), (3.0,3.0), and (3.0,0.0). Установка режима адресации текстуры "Обертывание" приводит к тому, что текстура применяется три раза в обоих направлениях (U и V), как показано на следующем рисунке.Setting the texture addressing mode to "Wrap" results in the texture being applied three times in both the u-and v-directions, as shown in the following illustration.

иллюстрация текстуры с изображением лица с обертыванием в U- и V-направлениях

Сравните это со следующим режимом адресации текстур — отражением.Contrast this with the following Mirror texture address mode.

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

В режиме адресации текстур Mirror Direct3D зеркально отражает текстуру у каждой целочисленной границы.The Mirror texture address mode causes Direct3D to mirror the texture at every integer boundary.

Предположим, например, что приложение создает квадратный примитив и задает координаты текстуры (0.0,0.0), (0.0,3.0), (3.0,3.0) и (3.0,0.0).Suppose, for example, your application creates a square primitive and specifies texture coordinates of (0.0,0.0), (0.0,3.0), (3.0,3.0), and (3.0,0.0). Установка режима адресации текстуры "Отражение" приводит к тому, что текстура применяется три раза в обоих направлениях (U и V).Setting the texture addressing mode to "Mirror" results in the texture being applied three times in both the u- and v-directions. Каждая вторая строка и каждый столбец, к которым применяется текстура, является зеркальным отражением предыдущей строки или столбца, как показано на следующем рисунке.Every other row and column that it is applied to is a mirror image of the preceding row or column, as shown in the following illustration.

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

Сравните этот режим с предыдущим режимом адресации текстуры — обертыванием.Contrast this with the previous Wrap texture address mode.

Установить режим адресации текстурыClamp texture address mode

Режим адреса текстуры выполняют приведение вызывает Direct3D для фиксации координаты текстуры для [0.0, 1.0] диапазон; Режим выполняют приведение применяется текстуры один раз, а затем smears цвет пикселей edge.The Clamp texture address mode causes Direct3D to clamp your texture coordinates to the [0.0, 1.0] range; Clamp mode applies the texture once, then smears the color of edge pixels.

Предположим, что приложение создает квадратный примитив и задает его вершинам координаты текстуры (0.0,0.0), (0.0,3.0), (3.0,3.0) и (3.0,0.0).Suppose that your application creates a square primitive and assigns texture coordinates of (0.0,0.0), (0.0,3.0), (3.0,3.0), and (3.0,0.0) to the primitive's vertices. Установка режима адресации текстуры "Закрепление" приводит к тому, что текстура применяется один раз.Setting the texture addressing mode to "Clamp" results in the texture being applied once. Цвета пикселей вверху столбцов и в конце строк применяются к верхней и правой части примитива соответственно.The pixel colors at the top of the columns and the end of the rows are extended to the top and right of the primitive respectively.

На следующем рисунке показана прикрепленная текстура.The following illustration shows a clamped texture.

изображение текстуры и прикрепленной текстуры

Режим адреса цвет границы текстурыBorder Color texture address mode

В режиме адресации текстур Border Color Direct3D использует произвольный цвет, называемый цвет рамки, для любых координат текстуры вне диапазона от 0.0 до 1.0 включительно.The Border Color texture address mode causes Direct3D to use an arbitrary color, known as the border color, for any texture coordinates outside the range of 0.0 through 1.0, inclusive.

На следующем рисунке приложение задает применение текстуры к примитиву с помощью рамки красного цвета.In the following illustration, the application specifies that the texture be applied to the primitive using a red border.

изображение текстуры и текстуры с красной рамкой

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

Несмотря на то, что система в целом допускает использование координат текстуры вне диапазона от 0.0 до 1.0 включительно, аппаратные ограничения часто влияют на то, насколько далеко за пределы этого диапазона могут выходить координаты текстуры.Although the system generally allows texture coordinates outside the range of 0.0 and 1.0, inclusive, hardware limitations often affect how far outside that range texture coordinates can be. Устройство отрисовки передает ограничение полного спектра координат текстуры, разрешенное устройством, при получении данных о возможностях устройства.A rendering device communicates the limit for the full range of texture coordinates allowed by the device, when you retrieve the device's capabilities.

Например, если это значение равно 128, вводные координаты текстуры должны оставаться в диапазоне от -128.0 до +128.0.For instance, if this value is 128, then the input texture coordinates must be kept in the range -128.0 to +128.0. Передача вершин с координатами текстуры вне данного диапазона является недопустимой.Passing vertices with texture coordinates outside this range is invalid. Это же ограничение относится к координатам текстуры, полученным в результате автоматического создания координат текстуры и преобразования координат текстуры.The same restriction applies to the texture coordinates generated as a result of automatic texture coordinate generation and texture coordinate transformations.

Ограничения повторения текстур могут зависеть от размера текстуры, индексируемого координатами текстуры.Texture repeating limitations can depend on the size of the texture indexed by the texture coordinates. В этом случае предположим, что размер текстуры — 32 пкс, и диапазона разрешенных устройством координат текстуры составляет 512, тогда фактически допустимым диапазоном текстуры будет 512/32=16, поэтому координаты текстуры для этого устройства должны находиться в пределах диапазона от -16.0 до +16.0.In that case, supposing the texture dimension is 32, and the range of texture coordinates allowed by the device is 512, the actual valid texture coordinate range would therefore be 512/32 = 16, so the texture coordinates for this device must be within the range of -16.0 to +16.0.

Связанные разделыRelated topics

ТекстурыTextures