Класс QSGTexture
Класс QSGTexture — базовый класс для текстур, используемых в графическом дереве сцены. Подробнее...
| Заголовок: | #include <QSGTexture> |
| qmake: | QT += quick |
| Наследуется от: | QObject |
| Наследует: |
Типы публичного доступа
| Перечисление | 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