Spec-Zone.ru › Qt 5.15

Класс QSGTexture

Класс QSGTexture — базовый класс для текстур, используемых в графическом дереве сцены. Подробнее...

Заголовок: #include <QSGTexture>
qmake: QT += quick
Наследует: QObject
Наследуется от:

QSGDynamicTexture

  • Список всех членов, включая унаследованные

Типы публичного доступа

Структура NativeTexture
Перечисление Уровень анизотропии { AnisotropyNone, Anisotropy2x, Anisotropy4x, Anisotropy8x, Anisotropy16x }
Перечисление Фильтрация { None, Nearest, Linear }
Перечисление Режим обвязки { Repeat, ClampToEdge, MirroredRepeat }

Функции публичного доступа

QSGTexture()
виртуальный ~QSGTexture() override
QSGTexture::AnisotropyLevel anisotropyLevel() const
виртуальный void bind() = 0
int comparisonKey() const
QRectF convertToNormalizedSourceRect(const QRectF &rect) const
QSGTexture::Filtering filtering() const
виртуальный bool hasAlphaChannel() const = 0
виртуальный bool hasMipmaps() const = 0
QSGTexture::WrapMode горизонтальныйРежимОбвязки() const
виртуальный bool isAtlasTexture() const
QSGTexture::Filtering mipmapFiltering() const
QSGTexture::NativeTexture nativeTexture() const
виртуальный QRectF нормализованнаяОбластьТекстуры() const
виртуальный QSGTexture * removedFromAtlas() const
void setAnisotropyLevel(QSGTexture::AnisotropyLevel level)
void setFiltering(QSGTexture::Filtering filter)
void установитьГоризонтальныйРежимОбвязки(QSGTexture::WrapMode hwrap)
void setMipmapFiltering(QSGTexture::Filtering filter)
void установитьВертикальныйРежимОбвязки(QSGTexture::WrapMode vwrap)
виртуальный int textureId() const = 0
виртуальный QSize размерТекстуры() const = 0
void updateBindOptions(bool force = false)
void updateRhiTexture(QRhi *rhi, QRhiResourceUpdateBatch *resourceUpdates)
QSGTexture::WrapMode вертикальныйРежимОбвязки() const

Подробное описание

Пользователи могут свободно реализовывать собственные классы текстур для поддержки произвольных входных текстур, таких как кадры видео YUV или 8-битные маски альфа-канала. Бэкенд графического дерева предоставляет стандартную реализацию обычных цветных текстур. Поскольку реализация может зависеть от аппаратного обеспечения, они создаются с помощью фабричной функции QQuickWindow::createTextureFromImage().

Текстура является оболочкой вокруг текстуры OpenGL, идентификатор которой задаётся функцией textureId(), а размер в пикселях — функцией размерТекстуры(). hasAlphaChannel() сообщает, содержит ли текстура значения непрозрачности, а hasMipmaps() — содержит ли текстура уровни mipmap.

Для использования текстуры вызовите функцию bind(). Параметры текстуры, определяющие, как текстура связывается, можно задать с помощью setMipmapFiltering(), setFiltering(), установитьГоризонтальныйРежимОбвязки() и установитьВертикальныйРежимОбвязки(). Текстура будет пытаться сохранить эти значения внутри, чтобы свести к минимуму изменения состояния OpenGL при привязке текстуры.

Атласы текстур

Некоторые бэкэнды графического дерева используют атласы текстур, объединяя несколько небольших текстур в одну большую. Если это так, функция isAtlasTexture() вернёт true. Атласы используются для улучшения сортировки алгоритмом рендеринга, что повышает производительность. Положение текстуры внутри атласа задаётся функцией нормализованнаяОбластьТекстуры().

Если текстура используется таким образом, что атлас нежелателен, функция removedFromAtlas() может быть использована для извлечения копии без использования атласа.

Примечание: Все классы с префиксом QSG должны использоваться только в потоке рендеринга графического дерева сцены. См. Графическое дерево сцены и рендеринг для получения дополнительной информации.

См. также Графическое дерево — рендеринг FBO и Графическое дерево — рендеринг FBO в потоке.

Документация по типам членов

перечисление QSGTexture::Уровень анизотропии

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

Константа Значение Описание
QSGTexture::AnisotropyNone 0 Отсутствует анизотропная фильтрация.
QSGTexture::Anisotropy2x 1 Анизотропная фильтрация 2x.
QSGTexture::Anisotropy4x 2 Анизотропная фильтрация 4x.
QSGTexture::Anisotropy8x 3 Анизотропная фильтрация 8x.
QSGTexture::Anisotropy16x 4 Анизотропная фильтрация 16x.

Это перечисление было введено или изменено в Qt 5.9.

перечисление QSGTexture::Фильтрация

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

Константа Значение Описание
QSGTexture::None 0 Фильтрация не выполняется. Это значение используется только вместе с setMipmapFiltering().
QSGTexture::Nearest 1 Выборка возвращает ближайший пиксель.
QSGTexture::Linear 2 Выборка возвращает линейную интерполяцию соседних пикселей.

enum QSGTexture::WrapMode

Указывает, как текстура должна обрабатывать координаты текстуры.

Константа Значение Описание
QSGTexture::Repeat 0 Используется только дробная часть координаты текстуры, что приводит к повторению значений выше 1 и ниже 0.
QSGTexture::ClampToEdge 1 Значения выше 1 ограничены до 1, а значения ниже 0 ограничены до 0.
QSGTexture::MirroredRepeat 2 Если координата текстуры чётная, используется только дробная часть. Если нечётная, координата текстуры устанавливается в 1 - fractional part. Это значение было введено в Qt 5.10.

Документация по функциям-членам

QSGTexture::QSGTexture()

Конструирует базовый класс QSGTexture.

[override virtual] QSGTexture::~QSGTexture()

Уничтожает QSGTexture.

QSGTexture::AnisotropyLevel QSGTexture::anisotropyLevel() const

Возвращает уровень анизотропии, используемый для фильтрации этой текстуры.

Эта функция была добавлена в Qt 5.9.

См. также setAnisotropyLevel().

[pure virtual] void QSGTexture::bind()

Вызовите эту функцию, чтобы привязать эту текстуру к текущей цели текстуры.

Привязка текстуры может также включать загрузку данных текстуры из ранее установленной QImage.

Предупреждение: Эта функция должна вызываться только при работе с прямым путем рендеринга OpenGL.

Предупреждение: Эта функция может вызываться только из потока рендеринга.

int QSGTexture::comparisonKey() const

Возвращает ключ, подходящий для сравнения текстур. Обычно используется в реализациях QSGMaterial::compare().

Простое сравнение указателей QSGTexture не всегда достаточно, потому что два экземпляра QSGTexture, ссылающиеся на один и тот же объект нативной текстуры, также должны считаться равными. Отсюда и эта функция.

Примечание: В отличие от textureId(), реализации этой функции не должны и не ожидают создавать графические ресурсы (объекты текстур) в случае, если их ещё нет.

QSGTexture, у которого нет объекта нативной текстуры, обычно не равен ни одному другому QSGTexture. Есть исключения из этого правила, в частности, при использовании атласов (где несколько текстур используют одну и ту же текстуру атласа под капотом), и в этом случае реализации подклассов должны с этим справиться соответствующим образом.

Предупреждение: Эта функция может вызываться только из потока рендеринга.

Эта функция была добавлена в Qt 5.14.

QRectF QSGTexture::convertToNormalizedSourceRect(const QRectF &rect) const

Возвращает rect, преобразованную в нормализованные координаты.

См. также normalizedTextureSubRect().

QSGTexture::Filtering QSGTexture::filtering() const

Возвращает режим выборки, который должен использоваться для этой текстуры.

См. также setFiltering().

[pure virtual] bool QSGTexture::hasAlphaChannel() const

Возвращает true, если данные текстуры содержат альфа-канал.

[pure virtual] bool QSGTexture::hasMipmaps() const

Возвращает true, если данные текстуры содержат уровни mipmap.

QSGTexture::WrapMode QSGTexture::horizontalWrapMode() const

Возвращает горизонтальный режим обертывания, который должен использоваться для этой текстуры.

См. также setHorizontalWrapMode().

[virtual] bool QSGTexture::isAtlasTexture() const

Возвращает, является ли эта текстура частью атласа или нет.

Реализация по умолчанию возвращает false.

QSGTexture::Filtering QSGTexture::mipmapFiltering() const

Возвращает, должен ли использоваться mipmapping при выборке из этой текстуры.

См. также setMipmapFiltering().

QSGTexture::NativeTexture QSGTexture::nativeTexture() const

Возвращает данные платформенно-специфической текстуры для этой текстуры.

Примечание: Это доступно только при использовании независимого от графического API пути рендеринга графического узла. Используйте textureId() в противном случае.

Возвращает пустой результат (object является null), если нет доступной подлежащей нативной текстуры.

Эта функция была добавлена в Qt 5.15.

См. также QQuickWindow::createTextureFromNativeObject().

[virtual] QRectF QSGTexture::normalizedTextureSubRect() const

Возвращает прямоугольник внутри textureSize(), который представляет собой эту текстуру в нормализованных координатах.

Реализация по умолчанию возвращает прямоугольник в позиции (0, 0) с шириной и высотой 1.

[virtual] QSGTexture *QSGTexture::removedFromAtlas() const

Эта функция возвращает копию текущей текстуры, удаленной из её атласа.

Текущая текстура остается неизменной, поэтому координаты текстуры не нужно обновлять.

Удаление текстуры из атласа в первую очередь полезно при передаче её в шейдер, который работает с координатами текстуры 0-1 вместо прямоугольника текстуры внутри атласа.

Если текстура не является частью атласа текстур, эта функция возвращает 0.

Реализациям этой функции рекомендуется возвращать один и тот же экземпляр для нескольких вызовов, чтобы ограничить использование памяти.

Предупреждение: Эта функция может вызываться только из потока рендеринга.

void QSGTexture::setAnisotropyLevel(QSGTexture::AnisotropyLevel level)

Устанавливает уровень анизотропной фильтрации, который будет использоваться для предстоящего вызова bind() на level. Значение по умолчанию — QSGTexture::AnisotropyNone, что означает, что анизотропная фильтрация отключена.

Эта функция была добавлена в Qt 5.9.

См. также anisotropyLevel().

void QSGTexture::setFiltering(QSGTexture::Filtering filter)

Устанавливает режим выборки, который должен использоваться для предстоящего вызова bind() на filter.

См. также filtering().

void QSGTexture::setHorizontalWrapMode(QSGTexture::WrapMode hwrap)

Устанавливает горизонтальный режим обертывания, который будет использоваться для предстоящего вызова bind() на hwrap.

См. также horizontalWrapMode().

void QSGTexture::setMipmapFiltering(QSGTexture::Filtering filter)

Устанавливает режим выборки mipmap, который должен использоваться для предстоящего вызова bind() на filter.

Установка фильтрации mipmap не имеет эффекта, если у текстуры нет mipmap.

См. также mipmapFiltering() и hasMipmaps().

void QSGTexture::setVerticalWrapMode(QSGTexture::WrapMode vwrap)

Устанавливает вертикальный режим обертывания, который будет использоваться для предстоящего вызова bind() на vwrap.

См. также verticalWrapMode().

[pure virtual] int QSGTexture::textureId() const

Возвращает идентификатор текстуры OpenGL для этой текстуры.

Значение по умолчанию равно 0, что указывает на недействительный идентификатор текстуры.

Функция всегда должна возвращать правильный идентификатор текстуры.

Предупреждение: Эта функция может вызываться только из потока рендеринга.

[pure virtual] QSize QSGTexture::textureSize() const

Возвращает размер текстуры.

void QSGTexture::updateBindOptions(bool force = false)

Обновляет состояние текстуры, чтобы оно соответствовало текущим настройкам фильтрации, mipmap и обертывания.

Если force равно true, все свойства будут обновлены независимо от того, изменились ли они или нет.

void QSGTexture::updateRhiTexture(QRhi *rhi, QRhiResourceUpdateBatch *resourceUpdates)

Вызовите эту функцию, чтобы добавить операции загрузки изображения в resourceUpdates, если таковые имеются. Если новых данных нет (например, потому что setImage() не вызывался с момента последнего вызова этой функции), функция ничего не делает.

END_OF_DOCUMENT_MARKER

Материалы, использующие rhi текстуры, должны вызывать эту функцию из своего метода updateSampledImage(), как правило, без каких-либо условий.

Примечание: Эта функция используется только при выполнении независимого от графического API пути отрисовки графа сцены.

Предупреждение: Эту функцию можно вызывать только из потока отрисовки.

Функция была добавлена в Qt 5.14.

QSGTexture::WrapMode QSGTexture::verticalWrapMode() const

Возвращает режим вертикальной обёртки для этой текстуры.

См. также setVerticalWrapMode().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qsgtexture.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API