Spec-Zone.ru › Qt 5.12

Класс QSGTexture

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

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

QSGDynamicTexture

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

Типы public

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

Функции public

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
  • 31 public functions inherited from QObject

Статические члены public

const QMetaObject staticMetaObject
  • 9 static public members inherited from QObject

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

  • 1 свойство, унаследованное от QObject
  • 1 public slot, унаследованный от QObject
  • 2 сигнала, унаследованные от QObject
  • 9 protected functions inherited from 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 в потоке.

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

enum QSGTexture::AnisotropyLevel

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

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

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

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

Если текстура не является частью атласа текстур, эта функция возвращает 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.12/qsgtexture.html

Spec-Zone.ru

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