Класс QSGTexture
Класс QSGTexture — базовый класс для текстур, используемых в графическом дереве сцены. Подробнее...
| Заголовок: | #include <QSGTexture> |
| qmake: | QT += quick |
| Наследует: | QObject |
| Наследуется от: |
Открытые типы
| Перечисление | Filtering { None, Nearest, Linear } |
| Перечисление | WrapMode { Repeat, ClampToEdge } |
Открытые функции
| QSGTexture() | |
| ~QSGTexture() | |
| виртуальный void | bind() = 0 |
| QRectF | convertToNormalizedSourceRect(const QRectF &rect) const |
| QSGTexture::Filtering | filtering() const |
| виртуальный bool | hasAlphaChannel() const = 0 |
| виртуальный bool | hasMipmaps() const = 0 |
| QSGTexture::WrapMode | horizontalWrapMode() const |
| виртуальный bool | isAtlasTexture() const |
| QSGTexture::Filtering | mipmapFiltering() const |
| виртуальный QRectF | normalizedTextureSubRect() const |
| виртуальный QSGTexture * | removedFromAtlas() const |
| void | setFiltering(Filtering filter) |
| void | setHorizontalWrapMode(WrapMode hwrap) |
| void | setMipmapFiltering(Filtering filter) |
| void | setVerticalWrapMode(WrapMode vwrap) |
| виртуальный int | textureId() const = 0 |
| виртуальный QSize | textureSize() const = 0 |
| void | updateBindOptions(bool force = false) |
| QSGTexture::WrapMode | verticalWrapMode() const |
- 31 открытых функций, унаследованных от 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::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.
[pure virtual] void QSGTexture::bind()
Вызов этой функции связывает текущую текстуру с текущей текстурой OpenGL.
Привязка текстуры также может включать загрузку данных текстуры из ранее установленного 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, если данные текстуры содержат уровни мип-мап.
QSGTexture::WrapMode QSGTexture::horizontalWrapMode() const
Возвращает режим горизонтальной обвязки, используемый для этой текстуры.
См. также setHorizontalWrapMode().
[virtual] bool QSGTexture::isAtlasTexture() const
Возвращает true, если эта текстура является частью атласа, и false в противном случае.
По умолчанию возвращает false.
QSGTexture::Filtering QSGTexture::mipmapFiltering() const
Возвращает, должен ли использоваться мип-мап при выборке из этой текстуры.
См. также setMipmapFiltering().
[virtual] QRectF QSGTexture::normalizedTextureSubRect() const
Возвращает прямоугольник внутри textureSize(), представляющий эту текстуру в нормализованных координатах.
По умолчанию возвращает прямоугольник с позицией (0, 0) и шириной и высотой 1.
[virtual] QSGTexture *QSGTexture::removedFromAtlas() const
Эта функция возвращает копию текущей текстуры, удаленной из её атласа.
Текущая текстура остаётся неизменной, поэтому координаты текстуры не нужно обновлять.
Удаление текстуры из атласа полезно, в первую очередь, при передаче её в шейдер, который оперирует координатами текстуры 0-1 вместо прямоугольника текстуры внутри атласа.
Если текстура не является частью атласа текстур, эта функция возвращает 0.
Рекомендуется, чтобы реализации этой функции возвращали один и тот же экземпляр для многократных вызовов, чтобы ограничить использование памяти.
Предупреждение: Эта функция может вызываться только из потока отрисовки.
void QSGTexture::setFiltering(Filtering filter)
Устанавливает режим выборки, который будет использоваться для предстоящего вызова bind() на filter.
См. также filtering().
void QSGTexture::setHorizontalWrapMode(WrapMode hwrap)
Устанавливает режим горизонтальной обвязки, который будет использоваться для предстоящего вызова bind() на hwrap.
См. также horizontalWrapMode().
void QSGTexture::setMipmapFiltering(Filtering filter)
Устанавливает режим выборки мип-мап, который будет использоваться для предстоящего вызова bind() на filter.
Установка фильтрации мип-мап не имеет эффекта, если текстура не содержит мип-мап.
См. также 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)
Обновляет состояние текстуры, чтобы оно соответствовало текущим параметрам фильтрации, мип-мап и обвязки.
Если 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.6/qsgtexture.html