ImageTextureLayered
Общая реализация GPU-текстур из одинаковых изображений-слоёв.
ImageTextureLayered предоставляет создание, обновление и хранение данных для Texture2DArray, Cubemap и CubemapArray. Создайте нужный конкретный тип, подготовьте одинаковые Image и вызовите CreateFromImages. Тип ресурса определяет, являются изображения слоями массива или гранями кубов.
В отличие от ImageTexture3D, здесь mipmaps находятся внутри каждого Image. UpdateLayer обновляет одну существующую позицию, а повторный CreateFromImages может заменить весь состав. Ни изменение исходного CPU-изображения, ни изменение GetLayerData сами по себе не загружают пиксели.
Проверены RGBA8-ресурсы, per-layer mipmaps, независимые чтения, обновление, смена состава и бинарная загрузка. Произвольные форматы, повреждённые данные и пределы памяти не проверены.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Свойства1
_ImagesСвойство
public Reckfell.Collections.Array<Image> _Images { get; set; }Внутреннее сохраняемое свойство. Getter читает по одному Image на слой, включая его mipmaps; setter использует CreateFromImages. Для обычного кода предпочтительны CreateFromImages, GetLayerData и UpdateLayer. Изменение пикселей полученного Image не обновляет GPU автоматически. Прочитанный массив нельзя считать списком отдельных mip-уровней.
Методы2
CreateFromImagesError
public Error CreateFromImages(Reckfell.Collections.Array<Image> images);Инициализирует или заменяет все слои конкретного Texture2DArray, Cubemap или CubemapArray. Нужен непустой массив непустых Image одинаковых размера, формата и наличия mipmaps. Для Cubemap нужны ровно 6 квадратных изображений, для CubemapArray — положительное число квадратных изображений, кратное 6. У mip-текстур каждый Image уже содержит свою цепочку: отдельные mip-изображения не добавляются в массив как новые слои. Проверяйте Error и журнал. При корректной замене RID сохраняется; метод не обещает автоматическое исправление входных данных.
| Имя | Тип | По умолчанию |
|---|---|---|
images | Reckfell.Collections.Array<Image> | — |
imagesНепустые одинаковые по размеру/формату Image с согласованными mipmaps; 6 граней на каждый cubemap.
ErrorError создания; проверяйте также журнал диагностики.
UpdateLayervoid
public void UpdateLayer(Image image, int layer);Загружает полное новое Image только в один уже существующий слой. Размер, формат и конфигурация mipmaps должны совпадать с текстурой; индекс — от 0 до GetLayers() − 1. Остальные слои не меняются. Это не resize и не добавление слоя. Возвращаемого Error нет; при неверном вводе метод сообщает ошибку. Для CubemapArray используйте индекс 6 × куб + грань.
| Имя | Тип | По умолчанию |
|---|---|---|
image | Image | — |
layer | int | — |
imageНепустое Image с размером, форматом и mipmaps существующих слоёв.
layerИндекс слоя от 0 до GetLayers() − 1; для cubemap-array — 6 × номер куба + грань.