Режимы адресации текстур (Direct3D 9)
Приложение Direct3D может назначать координаты текстуры любым вершинам любого примитива. Дополнительные сведения см. в разделе Координаты текстуры (Direct3D 9). Как правило U- и V-координаты текстур, назначаемых вершине, находятся в диапазоне от 0,0 до 1,0 включительно. Однако назначая координаты текстуры вне этого диапазона, можно создавать некоторые специальные эффекты текстурирования.
Вы управляете тем, что делает Direct3D с координатами текстуры, которые находятся за пределами диапазона [0,0, 1,0], задавая режим адресации текстуры. Например, приложение может задать режим адресации текстур, чтобы текстура разместилась на примитиве мозаикой.
Direct3D позволяет приложениям выполнять обтекание текстур. Важно отметить, что установка режима адресации текстуры в D3DTADDRESS_WRAP отличается от обтекания текстурой. Установка режима адресации текстуры D3DTADDRESS_WRAP приводит к тому, что к текущему примитиву применяется несколько копий исходной текстуры, а включение упаковки текстуры изменяет способ растеризации текстурированных многоугольников. Дополнительные сведения см. в разделе Упаковка текстур (Direct3D 9).
Включение обтекания текстур делает координаты текстуры за пределами диапазона [0,0, 1,0] недопустимыми, и поведение для растеризации таких ошибочных координат текстуры в этом случае не определено. При включении обтекания текстур режимы адресации текстур не используются. Следите за тем, чтобы приложение не указывало координаты текстуры меньше 0.0 или больше 1.0 при включенном обтекании текстур.
Настройка режима адресации
Вы можете задать режимы адресации текстур для отдельных этапов текстуры, вызвав метод IDirect3DDevice9::SetSamplerState . Укажите требуемый идентификатор этапа текстуры в параметре Sampler . Задайте для параметра Type значение D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV или D3DSAMP_ADDRESSW, чтобы обновить режимы адресации u, v или w по отдельности. Параметр Value определяет, какой режим задается. Это может быть любой член перечисленного типа D3DTEXTUREADDRESS . Чтобы получить текущий режим адреса текстуры для этапа текстуры, вызовите метод IDirect3Ddevice9::GetSamplerState, используя D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV или D3DSAMP_ADDRESSW элементы перечисления D3DSAMPLERSTATETYPE , чтобы определить режим адреса, о котором требуется информация.
Ограничения устройств
Несмотря на то, что система в целом допускает использование координат текстуры вне диапазона от 0.0 до 1.0 включительно, аппаратные ограничения часто влияют на то, насколько далеко за пределы этого диапазона могут выходить координаты текстуры. Устройство отрисовки сообщает это ограничение в элементе MaxTextureRepeat структуры D3DCAPS9 при получении возможностей устройства. Значение в этом элементе описывает полный диапазон координат текстуры, разрешенных устройством. Например, если это значение равно 128, вводные координаты текстуры должны оставаться в диапазоне от -128.0 до +128.0. Передача вершин с координатами текстуры вне данного диапазона является недопустимой. Это же ограничение относится к координатам текстуры, полученным в результате автоматического создания координат текстуры и преобразования координат текстуры.
На интерпретацию MaxTextureRepeat также влияет D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE бит возможностей. Если этот бит задан, значение в элементе MaxTextureRepeat используется точно так, как описано. Однако если D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE не задано, ограничения на повторяющиеся текстуры зависят от размера текстуры, индексированного координатами текстуры. В этом случае maxTextureRepeat необходимо масштабировать в зависимости от текущего размера текстуры на наибольшем уровне детализации, чтобы вычислить допустимый диапазон координат текстуры. Например, при измерении текстуры 32 и MaxTextureRepeat 512 фактически допустимый диапазон координат текстуры составляет 512/32 = 16, поэтому координаты текстуры для этого устройства должны находиться в диапазоне от -16,0 до +16,0.
Дополнительные сведения о режимах адресации текстур содержатся в следующих разделах.
- Режим адреса текстуры оболочки (Direct3D 9)
- Режим адреса зеркальной текстуры (Direct3D 9)
- Режим адреса текстуры (Direct3D 9)
- Режим адреса текстуры цвета границы (Direct3D 9)
Связанные темы