Texture - Руководство по Вердж3Д - Софт Эйт Софт
Description: Узнайте как использовать Texture в интерактивных 3Д-веб-приложениях сделанных на Вердж3Д

# Texture

Создаёт текстуру для применения к поверхности, либо для использования в качестве карты отражения или преломления.

После первого использования текстуры, её размеры, формат и тип не могут быть изменены. Вместо этого вызовите .dispose() на старой текстуре и создайте новую.

## Пример

`// загружаем текстуру, устанавливаем повторяющийся режим развёртки const texture = new v3d.TextureLoader().load('mytexture.jpg'); texture.wrapS = v3d.RepeatWrapping; texture.wrapT = v3d.RepeatWrapping; texture.repeat.set(4, 4);`

## Конструктор

### Texture(image : Image, mapping : Constant, wrapS : Constant, wrapT : Constant, magFilter : Constant, minFilter : Constant, format : Constant, type : Constant, anisotropy : Integer, encoding : Constant)

Смотрите описание свойств ниже за разъяснением значений параметров, передаваемых в конструктор.

## Свойства

### # .id : Integer

Уникальный номер данного экземпляра текстуры. Только для чтения.

### # .isTexture : Boolean

Флаг, указывающий что данный объект является экземпляром Texture. Только для чтения.

### # .uuid : String

UUID данного экземпляра объекта. Он присваивается автоматически и не подлежит редактированию.

### # .name : String

Необязательное и необязательно уникальное имя текстуры. По умолчанию используется пустая строка.

### # .image : Image

Объект изображения, обычно создаваемый с помощью метода TextureLoader.load. Это может быть любое изображение (например, PNG, JPG, WEBP, KTX2) или видео (например, MP4, WEBM), поддерживаемое «Вердж3Д».

Чтобы использовать видео в качестве текстуры, необходимо иметь воспроизводящий HTML5 видеоэлемент в качестве источника изображения текстуры и постоянно обновлять эту текстуру пока видео воспроизводится — класс VideoTexture обрабатывает это автоматически.

### # .mipmaps : Array

Массив заданных пользователем мипмапов (необ.).

### # .mapping : Constant

Как изображение применяется к объекту. По умолчанию используется тип v3d.UVMapping, где для наложения карты используются координаты U,V.

Другие типы отображения см. на странице текстурные константы.

### # .wrapS : Constant

Определяет, как текстура будет развёрнута по горизонтали. Соответствует координате U текстурной развёртки.

По умолчанию используется v3d.ClampToEdgeWrapping, где тексели ограничиваются текселями внешнего края. Два других варианта — v3d.RepeatWrapping и v3d.MirroredRepeatWrapping.

Подробности см. на странице текстурные константы.

### # .wrapT : Constant

Определяет, как текстура будет развёрнута по вертикали. Соответствует координате V текстурной развёртки. Доступны те же варианты, что и для .wrapS.

Примечание: тайлинг изображений в текстурах работает только в том случае, если размеры изображения равны степени двойки (2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, ...) в терминах пикселей. Отдельные размеры не обязательно должны быть равны, но каждый из них должен быть равен степени двойки. Это ограничение WebGL, а не «Вердж3Д».

### # .magFilter : Constant

Способ дискретизации текстуры, когда тексель занимает более одного пикселя. По умолчанию используется v3d.LinearFilter, который берет четыре ближайших текселя и билинейно интерполирует между ними. Другой вариант - v3d.NearestFilter, который использует значение ближайшего текселя.

Подробности см. на странице текстурные константы.

### # .minFilter : Constant

Способ дискретизации текстуры, когда тексель занимает менее одного пикселя. По умолчанию v3d.LinearMipmapLinearFilter, который использует mipmapping и трилинейный фильтр.

Все возможные варианты см. на странице текстурные константы.

### # .anisotropy : Constant

Количество образцов, взятых вдоль оси через пиксель, имеющий наибольшую плотность текселей. По умолчанию это значение равно `1`. Большее значение дает менее размытый результат, чем базовая мипмапа, за счет использования большего количества текстурных образцов. Используйте renderer.getMaxAnisotropy(), чтобы найти максимальное допустимое значение анизотропии для данного GPU.

### # .format : Constant

По умолчанию используется v3d.RGBAFormat.

Подробности о других форматах см. на странице текстурные константы.

### # .internalFormat : String

Значение по умолчанию получается с помощью комбинации .format и .type.

Формат GPU позволяет разработчику указать, как данные будут храниться на графическом процессоре.

### # .type : Constant

Оно должно соответствовать .format. По умолчанию используется v3d.UnsignedByteType, который будет использоваться для большинства форматов текстур.

Подробности о других форматах см. на странице текстурные константы.

### # .generateMipmaps : Boolean

Нужно ли генерировать мипмапы (если это возможно) для текстуры. По умолчанию `true`. Установите значение `false`, если вы создаете мипмапы вручную.

### # .premultiplyAlpha : Boolean

Если установлено значение `true`, то альфа-канал, если он присутствует, умножается на цветовые каналы при загрузке текстуры на GPU. По умолчанию `false`.

Обратите внимание, что это свойство не имеет эффекта для ImageBitmap. Вместо этого необходимо настроить при создании растрового изображения. См. ImageBitmapLoader.

### # .flipY : Boolean

Если установлено значение `true`, текстура переворачивается вдоль вертикальной оси при загрузке на GPU. По умолчанию `true`.

Обратите внимание, что это свойство не имеет эффекта для ImageBitmap. Вместо этого необходимо настроить при создании растрового изображения. См. раздел ImageBitmapLoader.

### # .unpackAlignment : Integer

4 по умолчанию. Определяет требования к выравниванию начала каждой строки пикселей в памяти. Допустимые значения: 1 (выравнивание по байтам), 2 (строки выравниваются по четным байтам), 4 (выравнивание по словам) и 8 (строки начинаются на границах двойных слов). Смотрите glPixelStorei для получения дополнительной информации.

### # .encoding : Constant

v3d.LinearEncoding по умолчанию. Подробности о других форматах см. на странице текстурные константы.

Обратите внимание, что если это значение изменяется на текстуре после использования материала, необходимо обратиться к Material.needsUpdate, чтобы это значение было учтено в шейдере.

### # .version : Integer

Он начинается с `0` и считает, сколько раз # .needsUpdate : Booleanустановлено в `true`.

### # .onUpdate : Function

Функция обратного вызова, вызываемая при обновлении текстуры (например, если для параметра needsUpdate было установлено значение true и затем используется текстура).

### # .needsUpdate : Boolean

Установите значение `true`, чтобы вызвать обновление при следующем использовании текстуры. Особенно важно для установки режима развёртки.

### # .userData : Object

Объект, который используется для хранения пользовательских данных о текстуре. Он не должен содержать ссылки на функции, так как они не будут клонироваться.

### # .source : Source

Определяет исходные данные текстуры. Ссылка на источник может расшариваться между различными текстурами. В частности, данная возможность используется в текстурных атласах, где несколько текстур с разными трансформациями используют одно и то же изображение.

## Методы

Методы EventDispatcher доступны для данного класса.

### # .clone() → Texture

Создаёт копию текстуры. Обратите внимание, что это не "глубокая копия", изображение является общим. Кроме того, клонирование текстуры не приводит к её автоматической загрузке в память. Вам следует установить флаг .needsUpdate в `true` как только источник тестуры полностью загрузится и будет готов.

### # .dispose()

Вызовите EventDispatcher.dispatchEvent с типом события 'dispose'.

## Исходный файл

О том как получить исходный код этого модуля читайте тут.