Spec-Zone.ru › Qt 6.0

Класс QSGTexture

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

Заголовок: #include <QSGTexture>
CMake: find_package(Qt6 COMPONENTS Quick REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick
Наследует: QObject
Наследуется от:

QSGDynamicTexture

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

Типы публичного доступа

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

Функции публичного доступа

QSGTexture()
виртуальный ~QSGTexture() override
QSGTexture::AnisotropyLevel anisotropyLevel() const
виртуальный qint64 comparisonKey() const = 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
QNativeInterface * nativeInterface() const
виртуальный QRectF normalizedTextureSubRect() const
виртуальный QSGTexture * removedFromAtlas(QRhiResourceUpdateBatch *resourceUpdates = nullptr) 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)
виртуальный QSize textureSize() const = 0
QSGTexture::WrapMode verticalWrapMode() const

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

Пользователи могут свободно реализовывать собственные классы текстур для поддержки произвольных входных текстур, таких как кадровые данные видео YUV или 8-битные альфа-маски. Графическое дерево сцены предоставляет стандартную реализацию для RGBA-текстур. Стандартная реализация не создаётся напрямую, а создаётся через фабричные функции, такие как QQuickWindow::createTextureFromImage().

В стандартной реализации каждый QSGTexture поддерживается QRhiTexture, который в свою очередь содержит объект нативной текстуры, такой как текстура OpenGL или изображение Vulkan.

Размер в пикселях задаётся функцией textureSize(). hasAlphaChannel() сообщает, содержит ли текстура значения непрозрачности, а hasMipmaps() сообщает, содержит ли текстура уровни мип-мап.

Материалы, работающие с текстурами, переопределяют updateSampledImage(), чтобы предоставить логику, определяющую, какая нативная текстура QSGTexture должна быть представлена в заданной точке привязки ресурсов шейдера.

QSGTexture не разделяет объекты изображения (текстуры) и самплеров. Параметры фильтрации и обёртывания можно указать с помощью setMipmapFiltering(), setFiltering(), setHorizontalWrapMode() и setVerticalWrapMode(). Графическое дерево сцены и абстракция графики Qt заботятся о создании отдельных объектов самплеров, если это необходимо.

Текстурные атласы

Некоторые бэкэнды графического дерева сцены используют текстурные атласы, группируя несколько мелких текстур в одну большую. В этом случае функция isAtlasTexture() вернёт true. Атласы используются для улучшения сортировки алгоритмом рендеринга, что увеличивает производительность. Атласы также необходимы для объединения (объединения геометрии для уменьшения количества вызовов отрисовки), так как два экземпляра одного материала, использующие две разные QSGTextures, не могут быть объединены, в то время как если обе QSGTextures ссылаются на один и тот же атлас, объединение может произойти, если материалы в остальном совместимы.

Расположение текстуры в атласе задаётся функцией normalizedTextureSubRect().

Если текстура используется таким образом, что атлас не предпочтительнее, функция removedFromAtlas() может использоваться для извлечения копии без атласа.

Примечание: Все классы с префиксом QSG должны использоваться только в потоке рендеринга графического дерева сцены. См. Графическое дерево сцены и рендеринг для получения дополнительной информации.

См. также Графическое дерево сцены - Отрисовка FBO.

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

Перечисление QSGTexture::AnisotropyLevel

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

Постоянная Значение Описание
Отсутствует анизотропная фильтрация.
Анизотропная фильтрация 2x.
Анизотропная фильтрация 4x.
Анизотропная фильтрация 8x.
Анизотропная фильтрация 16x.

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

Перечисление QSGTexture::Filtering

Определяет, как следует фильтровать выборку пикселей, когда координаты текстуры не выровнены по пикселям.

Постоянная Значение Описание
Фильтрация не должна выполняться. Это значение используется только вместе с setMipmapFiltering().
Выборка возвращает ближайший пиксель.
Выборка возвращает линейную интерполяцию соседних пикселей.

Перечисление 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.

[since 5.9] QSGTexture::AnisotropyLevel QSGTexture::anisotropyLevel() const

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

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

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

[pure virtual, since 5.14] qint64 QSGTexture::comparisonKey() const

Возвращает ключ, подходящий для сравнения текстур. Обычно используется в реализациях QSGMaterial::compare().

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

Реализации этой функции не должны и не ожидают создания каких-либо графических ресурсов (объектов нативной текстуры) в случае, если их ещё нет.

Экземпляр QSGTexture, у которого нет объекта нативной текстуры, обычно не равен любому другому экземпляру QSGTexture, поэтому возвращаемое значение должно быть соответствующим образом сконструировано. Есть исключения, в частности, когда используется атласирование (где несколько текстур используют одну и ту же текстуру атласа под капотом), в этом случае реализации подкласса должны справиться с этим должным образом.

Предупреждение: эту функцию можно вызывать только из потока рендеринга.

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

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().

template <typename QNativeInterface> QNativeInterface *QSGTexture::nativeInterface() const

Возвращает нативный интерфейс заданного типа для текстуры.

Эта функция предоставляет доступ к платформозависимым функциям QSGTexture, как объявлено в пространстве имён QNativeInterface:

QNativeInterface::QSGD3D11Texture

Предоставляет доступ к и позволяет адаптировать объекты текстур Direct3D 11.

QNativeInterface::QSGMetalTexture

Предоставляет доступ к и позволяет адаптировать объекты текстур Metal.

QNativeInterface::QSGOpenGLTexture

Предоставляет доступ к и позволяет адаптировать объекты текстур OpenGL.

QNativeInterface::QSGVulkanTexture

Предоставляет доступ к и позволяет адаптировать объекты изображений Vulkan.

Это позволяет получить доступ к основному объекту нативной текстуры, например, к идентификатору текстуры GLuint с OpenGL или к обработке VkImage с Vulkan.

Если запрашиваемый интерфейс недоступен, возвращается nullptr.

[virtual] QRectF QSGTexture::normalizedTextureSubRect() const

Возвращает прямоугольник внутри textureSize(), который представляет эту текстуру в нормализованных координатах.

Реализация по умолчанию возвращает прямоугольник в позиции (0, 0) с шириной и высотой 1.

[virtual] QSGTexture *QSGTexture::removedFromAtlas(QRhiResourceUpdateBatch *resourceUpdates = nullptr) const

Эта функция возвращает копию текущей текстуры, удалённой из её атласа.

Текущая текстура остаётся неизменной, поэтому обновлять координаты текстуры не нужно.

Удаление текстуры из атласа, в первую очередь, полезно, когда её передают в шейдер, который работает с координатами текстуры 0-1, а не с прямоугольником текстуры внутри атласа.

Если текстура не является частью атласа текстур, эта функция возвращает 0.

Реализации этой функции рекомендуется возвращать тот же экземпляр для нескольких вызовов, чтобы ограничить использование памяти.

resourceUpdates — это необязательная группа обновлений ресурсов, в которой, при необходимости, выполняются операции над текстурами. Материалы могут получить экземпляр из QSGMaterialShader::RenderState. Когда null, реализация removedFromAtlas() создаёт свою собственную группу обновлений и отправляет её сразу. Однако, когда указан действительный экземпляр, эта функция не будет отправлять группу обновлений.

Предупреждение: эту функцию можно вызывать только из потока рендеринга.

[since 5.9] void QSGTexture::setAnisotropyLevel(QSGTexture::AnisotropyLevel level)

Устанавливает уровень анизотропной фильтрации в level. Значение по умолчанию — QSGTexture::AnisotropyNone, что означает, что анизотропная фильтрация не включена.

Примечание: запрос может быть проигнорирован в зависимости от используемого графического API. Нет гарантии, что анизотропная фильтрация поддерживается во время выполнения.

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

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

void QSGTexture::setFiltering(QSGTexture::Filtering filter)

Устанавливает режим выборки в filter.

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

void QSGTexture::setHorizontalWrapMode(QSGTexture::WrapMode hwrap)

Устанавливает горизонтальный режим обёртки в hwrap

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

void QSGTexture::setMipmapFiltering(QSGTexture::Filtering filter)

Устанавливает режим выборки mipmap в filter.

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

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

void QSGTexture::setVerticalWrapMode(QSGTexture::WrapMode vwrap)

Устанавливает вертикальный режим обёртки в vwrap

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

[pure virtual] QSize QSGTexture::textureSize() const

Возвращает размер текстуры.

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-6.0/qsgtexture.html

Spec-Zone.ru

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