Spec-Zone.ru › Qt 5.11

Класс 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
  • 34 public functions inherited from QObject

Дополнительные унаследованные члены

  • 1 свойство, унаследованное от QObject
  • 1 public slot, унаследованный от QObject
  • 2 сигнала, унаследованные от QObject
  • 1 public переменная, унаследованная от QObject
  • 10 статических public членов, унаследованных от QObject
  • 9 protected функций, унаследованных от QObject
  • 2 protected переменных, унаследованных от QObject

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

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

Пользователи могут свободно реализовывать свои собственные классы текстур для поддержки произвольных входных текстур, таких как кадры видео YUV или 8-битные альфа-маски. Backend графического дерева предоставляет реализацию по умолчанию для обычных цветовых текстур. Поскольку реализация может быть специфичной для аппаратного обеспечения, они создаются с помощью фабричной функции 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 Выборка возвращает линейную интерполяцию соседних текселей.

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.

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

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

QSGTexture::WrapMode QSGTexture::verticalWrapMode() const

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

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

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

Spec-Zone.ru

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