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