Spec-Zone.ru › Qt 5.13

QSGRendererInterface Класс

Интерфейс, предоставляющий доступ к некоторым внутренним компонентам графического API сцены. Подробнее...

Заголовок: #include <QSGRendererInterface>
qmake: QT += quick
С тех пор: Qt 5.8

Этот класс был представлен в Qt 5.8.

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

Открытые типы

перечисление GraphicsApi { Unknown, Software, OpenGL, Direct3D12, OpenVG }
перечисление Resource { DeviceResource, CommandQueueResource, CommandListResource, PainterResource }
перечисление ShaderCompilationType { RuntimeCompilation, OfflineCompilation }
флаги ShaderCompilationTypes
перечисление ShaderSourceType { ShaderSourceString, ShaderSourceFile, ShaderByteCode }
флаги ShaderSourceTypes
перечисление ShaderType { UnknownShadingLanguage, GLSL, HLSL }

Открытые функции

виртуальный void * getResource(QQuickWindow *window, QSGRendererInterface::Resource resource) const
виртуальный void * getResource(QQuickWindow *window, const char *resource) const
виртуальный QSGRendererInterface::GraphicsApi graphicsApi() const = 0
виртуальный QSGRendererInterface::ShaderCompilationTypes shaderCompilationType() const = 0
виртуальный QSGRendererInterface::ShaderSourceTypes shaderSourceType() const = 0
виртуальный QSGRendererInterface::ShaderType shaderType() const = 0

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

Интерфейсы рендеринга позволяют получить доступ к функциональности графического API в графической части сцены. Как правило, такие внутренние компоненты не раскрываются. Однако, при интеграции пользовательского рендеринга, например, через QSGRenderNode, может потребоваться запросить определенные значения, например, графическое устройство (например, устройство Direct3D или Vulkan), которое используется графической частью сцены.

Функции QSGRendererInterface имеют различную доступность. Запросы API и языка, такие как graphicsApi() или shaderType() всегда доступны, что означает, что достаточно создать QQuickWindow или QQuickView, и используемый графический API или язык шейдеров можно запросить сразу после этого, используя QQuickWindow::rendererInterface(). Это гарантирует, что утилиты, такие как тип QML GraphicsInfo, могут сообщать правильные значения как можно раньше, без условных значений свойств - зависящих, например, от shaderType(), которые могут приводить к неожиданным результатам.

Однако доступы к специфичным для движка аксессорам, такие как getResource(), доступны только после инициализации графической части сцены. Кроме того, могут быть ограничения, специфичные для бэкенда, когда можно вызывать такие функции. Единственный способ гарантированно преуспеть – вызвать их, когда активен рендеринг узла (т. е. подготовка списка команд для следующего кадра). На практике это обычно означает QSGRenderNode::render().

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

перечисление QSGRendererInterface::GraphicsApi

Постоянная Значение Описание
QSGRendererInterface::Unknown 0 Используется неизвестный графический API
QSGRendererInterface::Software 1 Используется Qt Quick 2D рендерер
QSGRendererInterface::OpenGL 2 OpenGL ES 2.0 или выше
QSGRendererInterface::Direct3D12 3 Direct3D 12
QSGRendererInterface::OpenVG 4 OpenVG через EGL

перечисление QSGRendererInterface::Resource

Постоянная Значение Описание
QSGRendererInterface::DeviceResource 0 Графическое устройство, если применимо.
QSGRendererInterface::CommandQueueResource 1 Очередь графических команд, используемая графической частью сцены, если применимо.
QSGRendererInterface::CommandListResource 2 Список или буфер команд, используемый графической частью сцены, если применимо.
QSGRendererInterface::PainterResource 3 Активный QPainter, используемый графической частью сцены при работе с программным бэкендом.

перечисление QSGRendererInterface::ShaderCompilationTypeфлаги QSGRendererInterface::ShaderCompilationTypes

Постоянная Значение Описание
QSGRendererInterface::RuntimeCompilation 0x01 Поддерживается компиляция кода шейдеров в реальном времени
QSGRendererInterface::OfflineCompilation 0x02 Поддерживается предварительно скомпилированный байткод

Тип ShaderCompilationTypes – это псевдоним для QFlags<ShaderCompilationType>. Он хранит результат побитового ИЛИ значений ShaderCompilationType.

перечисление QSGRendererInterface::ShaderSourceTypeфлаги QSGRendererInterface::ShaderSourceTypes

Постоянная Значение Описание
QSGRendererInterface::ShaderSourceString 0x01 Источник шейдера может быть предоставлен в виде строки в соответствующих свойствах ShaderEffect
QSGRendererInterface::ShaderSourceFile 0x02 Поддерживаются локальные или файлы ресурсов, содержащие код шейдера
QSGRendererInterface::ShaderByteCode 0x04 Поддерживаются локальные или файлы ресурсов, содержащие байткод шейдера

Тип ShaderSourceTypes – это псевдоним для QFlags<ShaderSourceType>. Он хранит результат побитового ИЛИ значений ShaderSourceType.

перечисление QSGRendererInterface::ShaderType

Постоянная Значение Описание
QSGRendererInterface::UnknownShadingLanguage 0 Еще не известно из-за отсутствия окна и графической части сцены
QSGRendererInterface::GLSL 1 GLSL или GLSL ES
QSGRendererInterface::HLSL 2 HLSL

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

[virtual] void *QSGRendererInterface::getResource(QQuickWindow *window, QSGRendererInterface::Resource resource) const

Запрашивает графический resource в window. Возвращает null, когда запрашиваемый ресурс не поддерживается или недоступен.

При успешном выполнении возвращаемый указатель является либо прямым указателем на интерфейс (и может быть преобразован, например, в ID3D12Device *) или указателем на неявную ручку, которая должна быть сначала разыменована (например, VkDevice dev = *static_cast<VkDevice *>(result)). Последнее необходимо, так как такие ручки могут иметь размеры, отличающиеся от размера указателя.

Примечание: Владение возвращаемым указателем никогда не передается вызывающей стороне.

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

[virtual] void *QSGRendererInterface::getResource(QQuickWindow *window, const char *resource) const

Запрашивает графический ресурс. resource — это ключ, специфичный для бэкенда. Это позволяет поддерживать любые будущие ресурсы, которые не указаны в перечислении Resource.

Примечание: Владение возвращаемым указателем никогда не передается вызывающей стороне.

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

[pure virtual] QSGRendererInterface::GraphicsApi QSGRendererInterface::graphicsApi() const

Возвращает графический API, используемый в Qt Quick scenegraph.

Примечание: Эту функцию можно вызывать в любом потоке.

[pure virtual] QSGRendererInterface::ShaderCompilationTypes QSGRendererInterface::shaderCompilationType() const

Возвращает битовую маску подходов к компиляции шейдеров, поддерживаемых Qt Quick бэкендом, используемым приложением.

Примечание: Эту функцию можно вызывать в любом потоке.

См. также QtQuick::GraphicsInfo.

[pure virtual] QSGRendererInterface::ShaderSourceTypes QSGRendererInterface::shaderSourceType() const

Возвращает битовую маску поддерживаемых способов предоставления исходного кода шейдеров в элементах ShaderEffect.

Примечание: Эту функцию можно вызывать в любом потоке.

См. также QtQuick::GraphicsInfo.

[pure virtual] QSGRendererInterface::ShaderType QSGRendererInterface::shaderType() const

Возвращает язык шейдинга, поддерживаемый Qt Quick бэкендом, используемым приложением.

Примечание: Эту функцию можно вызывать в любом потоке.

См. также QtQuick::GraphicsInfo.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qsgrendererinterface.html

Spec-Zone.ru

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