Spec-Zone.ru › Qt 5.9

Класс QSGTexture

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

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

QSGDynamicTexture

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

Открытые типы

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

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

QSGTexture()
~QSGTexture()
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(AnisotropyLevel level)
void setFiltering(Filtering filter)
void setHorizontalWrapMode(WrapMode hwrap)
void setMipmapFiltering(Filtering filter)
void setVerticalWrapMode(WrapMode vwrap)
virtual int textureId() const = 0
virtual QSize textureSize() const = 0
void updateBindOptions(bool force = false)
QSGTexture::WrapMode verticalWrapMode() const
  • 32 открытых функции унаследованы от QObject

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

  • 1 свойство унаследовано от QObject
  • 1 открытый слот унаследован от QObject
  • 2 сигнала унаследованы от QObject
  • 11 статических открытых членов унаследованы от QObject
  • 9 защищённых функций унаследованы от QObject

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

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

Пользователи могут свободно реализовывать свои собственные классы текстур для поддержки произвольных входных текстур, таких как кадры видео 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::QSGTexture()

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

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(AnisotropyLevel level)

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

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

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

void QSGTexture::setFiltering(Filtering filter)

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

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

void QSGTexture::setHorizontalWrapMode(WrapMode hwrap)

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

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

void QSGTexture::setMipmapFiltering(Filtering filter)

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

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

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

void QSGTexture::setVerticalWrapMode(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.9/qsgtexture.html

Spec-Zone.ru

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