Spec-Zone.ru › Qt 5.14

Класс QSGTexture

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

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

QSGDynamicTexture

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

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

перечисление AnisotropyLevel { AnisotropyNone, Anisotropy2x, Anisotropy4x, Anisotropy8x, Anisotropy16x }
перечисление Filtering { None, Nearest, Linear }
перечисление WrapMode { 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 horizontalWrapMode() const
виртуальный bool isAtlasTexture() const
QSGTexture::Filtering mipmapFiltering() const
виртуальный QRectF normalizedTextureSubRect() const
виртуальный QSGTexture * removedFromAtlas() const
void setAnisotropyLevel(QSGTexture::AnisotropyLevel level)
void setFiltering(QSGTexture::Filtering filter)
void setHorizontalWrapMode(QSGTexture::WrapMode hwrap)
void setMipmapFiltering(QSGTexture::Filtering filter)
void setVerticalWrapMode(QSGTexture::WrapMode vwrap)
виртуальный int textureId() const = 0
виртуальный QSize textureSize() const = 0
void updateBindOptions(bool force = false)
void updateRhiTexture(QRhi *rhi, QRhiResourceUpdateBatch *resourceUpdates)
QSGTexture::WrapMode verticalWrapMode() const

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

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

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

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

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

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

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

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

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

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

перечисление QSGTexture::AnisotropyLevel

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

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

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

перечисление QSGTexture::Filtering

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

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

перечисление 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().

[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() не вызывался с момента последнего вызова этой функции), функция ничего не делает.

Материалам, использующим текстуры 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.14/qsgtexture.html

Spec-Zone.ru

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