DrawableTexture2D
Texture2D с явными GPU-операциями записи.
Инициализируется через Setup и изменяется вызовами BlitRect/BlitRectMulti. Содержимое не обновляется автоматически при изменении материала. Поддерживает назначение в TextureRect/Sprite2D и чтение результата через GetImage; readback имеет стоимость.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
DrawableTexture2DКонструктор
public DrawableTexture2D();Создаёт ресурс DrawableTexture2D. Перед записью вызовите Setup: конструктор сам не выделяет целевое хранилище. Не принимайте размеры метаданных или RID placeholder за инициализированную рисуемую текстуру.
Методы7
BlitRectvoid
public void BlitRect(Rect2I rect, Texture2D source, Color? modulate = default, int mipmap = 0, Material material = null);Выполняет одну GPU-запись в прямоугольник цели, масштабируя в него весь источник. Материал передаётся операции и не становится постоянным эффектом. Без material используется blend_mix; собственный texture_blit без render_mode использует blend_disabled. Источник не может совпадать с целью.
| Имя | Тип | По умолчанию |
|---|---|---|
rect | Rect2I | — |
source | Texture2D | — |
modulate | Color? | default |
mipmap | int | 0 |
material | Material | null |
rectПрямоугольник назначения в координатах базового размера, включая запись в mipmap; не вырезка источника.
sourceИсточник Texture2D либо null для белой выборки. AtlasTexture не поддерживается ресурсным вызовом.
modulateЦвет, передаваемый как MODULATE; не маска каналов. В собственном шейдере применяйте его явно.
mipmapСуществующий уровень назначения; 0 — база.
materialBlitMaterial или texture_blit ShaderMaterial; null выбирает готовый blend_mix.
BlitRectMultivoid
public void BlitRectMulti(Rect2I rect, Reckfell.Collections.Array<Texture2D> sources, Reckfell.Collections.Array<DrawableTexture2D> extraTargets, Color? modulate = default, int mipmap = 0, Material material = null);Одна операция с 1–4 источниками и 1–4 целями, включая текущую текстуру. Все цели должны иметь одинаковый размер и запрошенный mipmap. Источники и цели не должны совпадать, выходные ресурсы не повторяйте. COLOR0 пишет текущую текстуру, COLOR1…3 — дополнительные; назначенные, но не записанные выходы RD становятся непрозрачно чёрными.
| Имя | Тип | По умолчанию |
|---|---|---|
rect | Rect2I | — |
sources | Reckfell.Collections.Array<Texture2D> | — |
extraTargets | Reckfell.Collections.Array<DrawableTexture2D> | — |
modulate | Color? | default |
mipmap | int | 0 |
material | Material | null |
rectОбщий прямоугольник назначения в базовых координатах всех целей.
sourcesОт 1 до 4 источников по порядку hint_blit_source0…3.
extraTargetsОт 0 до 3 дополнительных инициализированных DrawableTexture2D; текущая цель в массив не включается.
modulateЗначение MODULATE для шейдера операции.
mipmapОдин существующий уровень назначения у всех целей.
materialМатериал типа texture_blit; null использует готовый материал.
GenerateMipmapsvoid
public void GenerateMipmaps();Перегенерирует нижние уровни из базового уровня и заменяет их прежнее содержимое, включая ручные записи. Цепочка должна быть выделена через Setup(useMipmaps:true). Обычный blit не поддерживает её актуальность автоматически.
GetUseMipmapsbool
public bool GetUseMipmaps();Возвращает сохранённый флаг настройки, а не результат проверки GPU-хранилища. После отдельного SetUseMipmaps(true) физические уровни могут отсутствовать до Setup.
boolСохранённый bool useMipmaps.
SetFormatvoid
public void SetFormat(DrawableTexture2D.DrawableFormat format);Меняет настройку формата ресурса без переразмещения уже созданного GPU-хранилища. Для смены реального формата вызовите Setup с нужным DrawableFormat; содержимое при этом сбрасывается.
| Имя | Тип | По умолчанию |
|---|---|---|
format | DrawableTexture2D.DrawableFormat | — |
formatЗапрошенный DrawableFormat для настройки ресурса.
SetUseMipmapsvoid
public void SetUseMipmaps(bool mipmaps);Меняет флаг mipmaps без выделения уровней у уже созданного хранилища. Для действительной цепочки вызовите Setup с useMipmaps=true. Getter флага не подтверждает наличие уровней.
| Имя | Тип | По умолчанию |
|---|---|---|
mipmaps | bool | — |
mipmapsЗапрошенный флаг; сам setter не создаёт mipmap-цепочку.
Setupvoid
public void Setup(int width, int height, DrawableTexture2D.DrawableFormat format, Color? color = default, bool useMipmaps = false);Выделяет или заново создаёт хранилище заданного размера, формата, цвета и mipmap-цепочки. Повторный вызов сбрасывает содержимое; проверенный RD сохраняет RID ресурса. Явно передайте Colors.Transparent для прозрачного холста. Числа 1–16384 — граница API, а не гарантия бюджета GPU.
| Имя | Тип | По умолчанию |
|---|---|---|
width | int | — |
height | int | — |
format | DrawableTexture2D.DrawableFormat | — |
color | Color? | default |
useMipmaps | bool | false |
widthШирина от 1 до 16384.
heightВысота от 1 до 16384.
formatФормат DrawableFormat; пример проверен с Rgba8.
colorНачальный цвет; null/пропуск означает белый, не прозрачный.
useMipmapstrue — выделить mipmap-цепочку для последующих записей/генерации.
DrawableTexture2D.DrawableFormat
| Значение | Описание |
|---|---|
Rgba8 = 0 | Текстурный формат OpenGL RGBA, состоящий из четырех компонентов, каждый с 8-битной глубиной цвета. |
Rgba8Srgb = 1 | Текстурный формат OpenGL RGBA с четырьмя компонентами, каждый с 8-битной глубиной цвета. При отрисовке выполняется преобразование цветового пространства sRGB в линейное. |
Rgbaf = 3 | Текстурный формат OpenGL GL_RGBA32F, состоящий из четырех компонентов, каждый из которых представляет собой 32-битное значение с плавающей запятой. |
Rgbah = 2 | Текстурный формат OpenGL GL_RGBA16F, состоящий из четырех компонентов, каждый из которых представляет собой 16-битное значение с плавающей запятой "половинной точности". |