Spec-Zone.ru › Qt 5.13

Класс QSGTexture

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

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

QSGDynamicTexture

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

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

перечисление AnisotropyLevel { AnisotropyNone, Anisotropy2x, Anisotropy4x, Anisotropy8x, Anisotropy16x }
перечисление Filtering { None, Nearest, Linear }
перечисление WrapMode { Repeat, ClampToEdge, MirroredRepeat }

Открытые функции

QSGTexture()
virtual ~QSGTexture() override
QSGTexture::AnisotropyLevel anisotropyLevel() const
virtual void bind() = 0
QRectF convertToNormalizedSourceRect(const QRectF &rect) const
QSGTexture::Filtering filtering() const
virtual bool hasAlphaChannel() const = 0
virtual bool hasMipmaps() const = 0
QSGTexture::WrapMode horizontalWrapMode() const
virtual bool isAtlasTexture() const
QSGTexture::Filtering mipmapFiltering() const
virtual QRectF normalizedTextureSubRect() const
virtual 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)
virtual int textureId() const = 0
virtual QSize textureSize() const = 0
void updateBindOptions(bool force = false)
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.

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

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 вместо прямоугольника текстуры внутри атласа.

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

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

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

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, все свойства будут обновлены независимо от того, изменились они или нет.

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.13/qsgtexture.html

Spec-Zone.ru

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