Texture3D
Базовый контракт объёмной текстуры с шириной, высотой и глубиной.
Texture3D описывает объём данных, а не текстуру, которая просто назначена 3D-объекту. Для создания пикселей используйте ImageTexture3D; массив независимых 2D-слоёв имеет другой контракт TextureLayered. Сам базовый конструктор не загружает объём.
GetDepth — число срезов основного уровня. GetData при mipmaps содержит также уменьшенные уровни, поэтому его Count не обязан равняться глубине. Формат чтения и стоимость зависят от реализации; не считайте любой подкласс источником готовых RGBA8-данных.
Для своего подкласса реализуйте hooks размеров, формата, mipmaps и данных согласованно. Проверены нативные вызовы этих hooks и placeholder. Это не подтверждает корректное семплирование произвольного подкласса в шейдере. Сохранение конкретного ImageTexture3D имеет отдельное ограничение для mipmaps при ширине и высоте 1; оно описано у этого класса.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
Texture3DКонструктор
public Texture3D();Создаёт базовый ресурс, а не готовую объёмную текстуру с данными. Обычно используйте ImageTexture3D или CompressedTexture3D. Для собственного подкласса реализуйте методы размеров, формата и данных; сам конструктор не загружает воксели.
Методы13
CreatePlaceholderResource
public Resource CreatePlaceholder();Создаёт отдельный PlaceholderTexture3D с текущими шириной, высотой и глубиной. Данные вокселей и цепочка mipmaps не копируются. Это заменитель ресурса, не уменьшенная копия объёма.
ResourceResource с конкретным типом PlaceholderTexture3D и размером оригинала.
GetDataReckfell.Collections.Array<Image>
public Reckfell.Collections.Array<Image> GetData();Читает срезы, предоставленные реализацией. Для ImageTexture3D это отдельные изображения из GPU-данных: изменение результата не обновляет текстуру, требуется Update. Порядок при mipmaps: все Z-срезы основного уровня, затем все срезы следующего, до 1×1×1. Не считайте весь массив только основными слоями и не выполняйте лишнее чтение каждый кадр. Перед чтением ImageTexture3D должна быть инициализирована.
Reckfell.Collections.Array<Image>Массив Image в порядке реализации; у ImageTexture3D — по уровням и Z-срезам.
GetDepthint
public int GetDepth();Возвращает глубину основного уровня: число его Z-срезов. При наличии mipmaps GetData.Count может быть больше глубины, поскольку включает дополнительные уровни.
intЧисло Z-срезов основного уровня.
GetFormatImage.Format
public Image.Format GetFormat();Возвращает Image.Format реализации. У базового контракта без поставщика результат Max не обозначает пригодный формат данных. Проверяйте конкретный подкласс и данные перед обработкой пикселей.
Image.FormatФормат предоставленных данных изображения.
GetHeightint
public int GetHeight();Возвращает высоту основного уровня объёма в текселях. В собственном Texture3D значение предоставляет _GetHeight.
intВысота основного уровня в текселях.
GetWidthint
public int GetWidth();Возвращает ширину основного уровня объёма в текселях. В собственном Texture3D значение предоставляет _GetWidth. Это не число срезов и не мировой размер объекта.
intШирина основного уровня в текселях.
HasMipmapsbool
public bool HasMipmaps();Возвращает признак объёмной mipmap-цепочки от реализации. Это не означает, что каждый Image из GetData содержит собственные mipmaps: у ImageTexture3D уровни представлены отдельными изображениями-срезами.
boolЕсть ли объёмная цепочка mipmaps по контракту реализации.
_GetDataReckfell.Collections.Array<Image>
public virtual Reckfell.Collections.Array<Image> _GetData();Поставщик массива изображений-срезов собственного Texture3D. Нативный GetData обращается к этому hook. Тестовый подкласс создаёт независимые изображения; остальные реализации могут иметь другую стоимость и правила доступа. Не освобождайте возвращаемые ресурсы до передачи вызывающему коду.
Reckfell.Collections.Array<Image>Массив Image в порядке реализации; у ImageTexture3D — по уровням и Z-срезам.
_GetDepthint
public virtual int _GetDepth();Поставщик числа Z-срезов основного уровня собственного Texture3D. Не возвращайте общее число изображений всех mip-уровней вместо глубины.
intЧисло Z-срезов основного уровня.
_GetFormatImage.Format
public virtual Image.Format _GetFormat();Поставщик конкретного Image.Format собственного Texture3D. Он должен соответствовать формату данных _GetData; запрос формата не выполняет преобразование изображений.
Image.FormatФормат предоставленных данных изображения.
_GetHeightint
public virtual int _GetHeight();Поставщик высоты основного уровня собственного Texture3D. Согласуйте с размерами предоставляемых срезов.
intВысота основного уровня в текселях.
_GetWidthint
public virtual int _GetWidth();Поставщик ширины основного уровня собственного Texture3D. Возвращайте значение, согласованное с _GetData и другими размерами; не создаёт GPU-хранилище автоматически.
intШирина основного уровня в текселях.
_HasMipmapsbool
public virtual bool _HasMipmaps();Поставщик признака объёмных mipmaps собственного Texture3D. Согласуйте с порядком и количеством изображений _GetData. Сам по себе true не генерирует уровни.
boolЕсть ли объёмная цепочка mipmaps по контракту реализации.