Texture2D
Базовый ресурс двумерной текстуры для интерфейса, 2D и материалов 3D.
Texture2D задаёт общий контракт текстур, а не загружает файл своим конструктором. Для импортированных ресурсов используйте ResourceLoader.Load<Texture2D>; для создаваемых пикселей — ImageTexture, для SVG — DpiTexture. Один ресурс может использоваться несколькими объектами; изменение ресурса влияет на всех его пользователей.
GetSize возвращает логический размер. GetImage читает данные, доступные конкретной реализации; после size override его разрешение может отличаться от GetSize. Не считайте HasAlpha доказательством прозрачных пикселей. В текущем ImageTexture запросы HasMipmaps/GetMipmapCount могут возвращать false/0 при наличии цепочки в GetImage; это подтверждённое ограничение этой реализации.
Draw, DrawRect и DrawRectRegion отправляют 2D-команды для CanvasItem. Они не назначают текстуру материалу 3D. transpose переставляет оси; srcRect использует координаты текстуры, не нормализованные UV. Для собственных ресурсов методы с подчёркиванием — hooks реализации; вызовы публичных методов и hooks выполняют разные роли.
Проверены виртуальная диспетчеризация, параметры рисования, placeholder и запросы ресурса в Windows Forward+/Vulkan. Визуальный результат transpose/tile/clip, произвольные подклассы и использование в 3D этими проверками не подтверждены. Максимальный размер и потребление памяти зависят от backend, GPU и формата; одно число не гарантирует успешное выделение.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
Texture2DКонструктор
public Texture2D();Создаёт базовый ресурс Texture2D, но не загружает изображение и не выделяет готовую текстуру с пикселями. Обычно используйте конкретный подкласс или ResourceLoader.Load<Texture2D>. В собственном подклассе реализуйте необходимые методы размеров и данных.
Методы23
CreatePlaceholderResource
public Resource CreatePlaceholder();Создаёт отдельный PlaceholderTexture2D с текущим логическим размером. Исходные пиксели, формат и цепочка mipmaps не копируются. Используйте как заменитель ресурса, а не как уменьшенную копию изображения.
ResourceResource, фактически PlaceholderTexture2D с логическим размером оригинала, без исходных пикселей.
Drawvoid
public void Draw(Rid canvasItem, Vector2 position, Color? modulate = default, bool transpose = false);Рисует всю текстуру с верхним левым углом position и её логическим размером. modulate умножает цвет, null в C# означает белый. transpose переставляет оси; не считайте его универсальным поворотом на 90°. Используйте действительный RID CanvasItem, например GetCanvasItem() внутри _Draw своего Entity2D/Control. Для повторной отрисовки после изменения состояния вызовите QueueRedraw у CanvasItem. Это 2D-команда, не назначение материала 3D.
| Имя | Тип | По умолчанию |
|---|---|---|
canvasItem | Rid | — |
position | Vector2 | — |
modulate | Color? | default |
transpose | bool | false |
canvasItemЗаимствованный действительный RID целевого CanvasItem; это не RID текстуры.
positionВерхний левый угол в локальных координатах целевого CanvasItem.
modulateМножитель RGBA; null в nullable-параметре публичного C#-метода означает белый, в hook передаётся уже конкретный Color.
transposeПереставить оси при рисовании; не произвольный угол вращения.
DrawRectvoid
public void DrawRect(Rid canvasItem, Rect2 rect, bool tile, Color? modulate = default, bool transpose = false);Рисует текстуру в прямоугольнике rect. При tile = false изображение растягивается, при true повторяется для заполнения области. modulate умножает цвет; transpose переставляет оси, а не задаёт произвольный угол. Используйте действительный RID CanvasItem, например GetCanvasItem() внутри _Draw своего Entity2D/Control. Для повторной отрисовки после изменения состояния вызовите QueueRedraw у CanvasItem. Это 2D-команда, не назначение материала 3D.
| Имя | Тип | По умолчанию |
|---|---|---|
canvasItem | Rid | — |
rect | Rect2 | — |
tile | bool | — |
modulate | Color? | default |
transpose | bool | false |
canvasItemЗаимствованный действительный RID целевого CanvasItem; это не RID текстуры.
rectПрямоугольник назначения в локальных координатах CanvasItem.
tileПовторять текстуру вместо растяжения на rect.
modulateМножитель RGBA; null в nullable-параметре публичного C#-метода означает белый, в hook передаётся уже конкретный Color.
transposeПереставить оси при рисовании; не произвольный угол вращения.
DrawRectRegionvoid
public void DrawRectRegion(Rid canvasItem, Rect2 rect, Rect2 srcRect, Color? modulate = default, bool transpose = false, bool clipUV = true);Рисует область srcRect в rect. Область источника задана в координатах текстуры, не нормализованных UV 0…1. clipUV ограничивает выборку областью источника; это не clipping геометрии CanvasItem. modulate по умолчанию белый. Используйте действительный RID CanvasItem, например GetCanvasItem() внутри _Draw своего Entity2D/Control. Для повторной отрисовки после изменения состояния вызовите QueueRedraw у CanvasItem. Это 2D-команда, не назначение материала 3D.
| Имя | Тип | По умолчанию |
|---|---|---|
canvasItem | Rid | — |
rect | Rect2 | — |
srcRect | Rect2 | — |
modulate | Color? | default |
transpose | bool | false |
clipUV | bool | true |
canvasItemЗаимствованный действительный RID целевого CanvasItem; это не RID текстуры.
rectПрямоугольник назначения в локальных координатах CanvasItem.
srcRectПрямоугольник источника в координатах текстуры; не UV 0…1.
modulateМножитель RGBA; null в nullable-параметре публичного C#-метода означает белый, в hook передаётся уже конкретный Color.
transposeПереставить оси при рисовании; не произвольный угол вращения.
clipUVОграничить выборку областью источника; по умолчанию true у публичного метода.
GetFormatImage.Format
public Image.Format GetFormat();Возвращает формат изображения, предоставленный реализацией текстуры. У базовой реализации без _GetFormat результат Image.Format.Max означает отсутствие конкретного формата; не передавайте его как формат нового Image. Формат не является информацией о цветовом пространстве материала.
Image.FormatФормат реализации либо Image.Format.Max без поставщика.
GetHeightint
public int GetHeight();Возвращает логическую высоту текстуры; size override может отличать её от высоты GetImage. В собственном подклассе значение предоставляет _GetHeight.
intЛогическая высота в единицах текстуры.
GetImageImage
public Image GetImage();Получает Image с данными текстуры, если реализация их предоставляет. Для импортированного CompressedTexture2D это снимок с возможным чтением из GPU: изменение Image не обновляет исходную текстуру. Не вызывайте чтение каждый кадр без необходимости.
ImageImage с доступными данными либо null, если реализация не предоставляет изображение. Не считайте формат всегда несжатым RGBA8.
GetMipmapCountint
public int GetMipmapCount();Возвращает число дополнительных уровней mipmaps от реализации; основной уровень не включается. Базовый результат без _GetMipmapCount — 0. В текущем ImageTexture он может оставаться 0 при наличии mipmaps в GetImage. Не рассчитывайте размер хранилища по неподтверждённому результату.
intЧисло дополнительных уровней от реализации; 0 у базы.
GetSizeVector2
public Vector2 GetSize();Возвращает Vector2 из GetWidth и GetHeight в логических единицах текстуры. Это не мировой размер Sprite2D, не размер Control и не обязательно физическое разрешение GetImage после override.
Vector2Vector2 из текущих логических ширины и высоты.
GetWidthint
public int GetWidth();Возвращает логическую ширину текстуры. У ресурса с size override она может отличаться от ширины GetImage. В собственном подклассе значение предоставляет _GetWidth; не выводите разрешение GPU-хранилища только из этого метода.
intЛогическая ширина в единицах текстуры.
HasAlphabool
public bool HasAlpha();Возвращает признак поддержки альфы от реализации; не проверяет каждый пиксель на прозрачность. У базовой реализации без _HasAlpha результат true. Поэтому true не доказывает наличие хотя бы одного прозрачного пикселя.
boolПризнак поддержки альфы; не факт наличия прозрачных пикселей.
HasMipmapsbool
public bool HasMipmaps();Возвращает признак mipmaps от реализации; у базы без _HasMipmaps — false. В текущем ImageTexture этот запрос может вернуть false при наличии цепочки в GetImage, поскольку подкласс не переопределяет нативный метод. Не используйте его как единственную проверку пиксельных данных всех типов текстур.
boolЗначение реализации; false у базового контракта.
_Drawvoid
public virtual void _Draw(Rid toCanvasItem, Vector2 pos, Color modulate, bool transpose);Переопределение Draw для собственного Texture2D. Если hook обработал вызов, базовая команда рисования не добавляется автоматически; отправьте нужные команды самостоятельно. Не вызывайте из него тот же метод на this: получится рекурсия. Рисует всю текстуру с верхним левым углом position и её логическим размером. modulate умножает цвет, null в C# означает белый. transpose переставляет оси; не считайте его универсальным поворотом на 90°. Используйте действительный RID CanvasItem, например GetCanvasItem() внутри _Draw своего Entity2D/Control. Для повторной отрисовки после изменения состояния вызовите QueueRedraw у CanvasItem. Это 2D-команда, не назначение материала 3D.
| Имя | Тип | По умолчанию |
|---|---|---|
toCanvasItem | Rid | — |
pos | Vector2 | — |
modulate | Color | — |
transpose | bool | — |
toCanvasItemДействительный RID CanvasItem, переданный нативным вызовом.
posВерхний левый угол в локальных координатах целевого CanvasItem.
modulateМножитель RGBA; null в nullable-параметре публичного C#-метода означает белый, в hook передаётся уже конкретный Color.
transposeПереставить оси при рисовании; не произвольный угол вращения.
_DrawRectvoid
public virtual void _DrawRect(Rid toCanvasItem, Rect2 rect, bool tile, Color modulate, bool transpose);Переопределение DrawRect для собственного Texture2D. Если hook обработал вызов, базовая команда рисования не добавляется автоматически; отправьте нужные команды самостоятельно. Не вызывайте из него тот же метод на this: получится рекурсия. Рисует текстуру в прямоугольнике rect. При tile = false изображение растягивается, при true повторяется для заполнения области. modulate умножает цвет; transpose переставляет оси, а не задаёт произвольный угол. Используйте действительный RID CanvasItem, например GetCanvasItem() внутри _Draw своего Entity2D/Control. Для повторной отрисовки после изменения состояния вызовите QueueRedraw у CanvasItem. Это 2D-команда, не назначение материала 3D.
| Имя | Тип | По умолчанию |
|---|---|---|
toCanvasItem | Rid | — |
rect | Rect2 | — |
tile | bool | — |
modulate | Color | — |
transpose | bool | — |
toCanvasItemДействительный RID CanvasItem, переданный нативным вызовом.
rectПрямоугольник назначения в локальных координатах CanvasItem.
tileПовторять текстуру вместо растяжения на rect.
modulateМножитель RGBA; null в nullable-параметре публичного C#-метода означает белый, в hook передаётся уже конкретный Color.
transposeПереставить оси при рисовании; не произвольный угол вращения.
_DrawRectRegionvoid
public virtual void _DrawRectRegion(Rid toCanvasItem, Rect2 rect, Rect2 srcRect, Color modulate, bool transpose, bool clipUV);Переопределение DrawRectRegion для собственного Texture2D. Если hook обработал вызов, базовая команда рисования не добавляется автоматически; отправьте нужные команды самостоятельно. Не вызывайте из него тот же метод на this: получится рекурсия. Рисует область srcRect в rect. Область источника задана в координатах текстуры, не нормализованных UV 0…1. clipUV ограничивает выборку областью источника; это не clipping геометрии CanvasItem. modulate по умолчанию белый. Используйте действительный RID CanvasItem, например GetCanvasItem() внутри _Draw своего Entity2D/Control. Для повторной отрисовки после изменения состояния вызовите QueueRedraw у CanvasItem. Это 2D-команда, не назначение материала 3D.
| Имя | Тип | По умолчанию |
|---|---|---|
toCanvasItem | Rid | — |
rect | Rect2 | — |
srcRect | Rect2 | — |
modulate | Color | — |
transpose | bool | — |
clipUV | bool | — |
toCanvasItemДействительный RID CanvasItem, переданный нативным вызовом.
rectПрямоугольник назначения в локальных координатах CanvasItem.
srcRectПрямоугольник источника в координатах текстуры; не UV 0…1.
modulateМножитель RGBA; null в nullable-параметре публичного C#-метода означает белый, в hook передаётся уже конкретный Color.
transposeПереставить оси при рисовании; не произвольный угол вращения.
clipUVОграничить выборку областью источника; по умолчанию true у публичного метода.
_GetFormatImage.Format
public virtual Image.Format _GetFormat();Поставщик формата для собственного Texture2D. Верните конкретный Image.Format, соответствующий предоставляемому изображению; без реализации базовый GetFormat возвращает Max. Не меняет формат GPU-текстуры автоматически.
Image.FormatКонкретный формат предоставляемых данных изображения.
_GetHeightint
public virtual int _GetHeight();Переопределите для собственного Texture2D: верните логическую высоту. Нативные GetHeight и GetSize используют этот контракт. Согласуйте размеры с собственной реализацией рисования.
intЛогическая высота собственной текстуры.
_GetImageImage
public virtual Image _GetImage();Поставщик Image для собственного Texture2D. Верните доступные данные либо null, если чтение не поддерживается. В тестовом подклассе возвращаются независимые изображения; базовый API не заставляет каждый подкласс копировать данные одинаково. Не освобождайте возвращаемый ресурс до передачи вызывающему коду.
ImageImage с доступными данными либо null.
_GetMipmapCountint
public virtual int _GetMipmapCount();Поставщик числа дополнительных mipmap-уровней собственного Texture2D, без основного уровня. Согласуйте с _HasMipmaps и фактическими данными. Без реализации базовый результат 0.
intКоличество дополнительных уровней, без основного.
_GetWidthint
public virtual int _GetWidth();Переопределите для собственного Texture2D: верните его логическую ширину. Нативные GetWidth и GetSize обращаются к этому контракту. Это запрос данных, а не место загрузки ресурса каждый кадр.
intЛогическая ширина собственной текстуры.
_HasAlphabool
public virtual bool _HasAlpha();Поставщик признака поддержки альфы для собственного Texture2D. Это декларация реализации, а не сканирование пикселей. Без переопределения базовый HasAlpha возвращает true.
boolПризнак поддержки альфы собственного ресурса.
_HasMipmapsbool
public virtual bool _HasMipmaps();Поставщик признака mipmaps для собственного Texture2D; согласуйте с _GetMipmapCount и данными _GetImage. Без переопределения базовый результат false; создание цепочки в отдельном Image не меняет этот контракт автоматически.
boolЕсть ли у предоставляемых данных цепочка mipmaps.
_IsPixelOpaquebool
public virtual bool _IsPixelOpaque(int x, int y);Переопределение проверки пикселя для собственного Texture2D; вызывается нативными потребителями, например Sprite2D.IsPixelOpaque. Координаты локальны для текстуры, не для экрана. Обработайте границы в своей реализации. Без переопределения базовый результат true. Это не автоматическая физическая коллизия.
| Имя | Тип | По умолчанию |
|---|---|---|
x | int | — |
y | int | — |
xЦелочисленная горизонтальная координата пикселя текстуры.
yЦелочисленная вертикальная координата пикселя текстуры.
booltrue для пикселя, который ваша реализация считает непрозрачным, иначе false.