Класс QSGRendererInterface
Интерфейс, предоставляющий доступ к некоторым внутренним особенностям графического API в дереве сцены. Подробнее...
| Заголовок: | #include <QSGRendererInterface> |
| qmake: | QT += quick |
| С момента: | Qt 5.8 |
Типы public
| перечисление | GraphicsApi { Unknown, Software, OpenGL, Direct3D12, OpenVG } |
| перечисление | Resource { DeviceResource, CommandQueueResource, CommandListResource, PainterResource } |
| перечисление | ShaderCompilationType { RuntimeCompilation, OfflineCompilation } |
| флаги | ShaderCompilationTypes |
| перечисление | ShaderSourceType { ShaderSourceString, ShaderSourceFile, ShaderByteCode } |
| флаги | ShaderSourceTypes |
| перечисление | ShaderType { UnknownShadingLanguage, GLSL, HLSL } |
Функции public
| виртуальный | ~QSGRendererInterface() |
| виртуальный void * | getResource(QQuickWindow *window, Resource resource) const |
| виртуальный void * | getResource(QQuickWindow *window, const char *resource) const |
| виртуальный GraphicsApi | graphicsApi() const = 0 |
| виртуальный ShaderCompilationTypes | shaderCompilationType() const = 0 |
| виртуальный ShaderSourceTypes | shaderSourceType() const = 0 |
| виртуальный ShaderType | shaderType() const = 0 |
Подробное описание
Интерфейс, предоставляющий доступ к некоторым внутренним особенностям графического API в дереве сцены.
Интерфейсы рендеринга позволяют получить доступ к специфичной для графического 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] QSGRendererInterface::~QSGRendererInterface()
Удаляет экземпляр QSGRendererInterface. Деструктор виртуальный.
[virtual] void *QSGRendererInterface::getResource(QQuickWindow *window, Resource resource) const
Запрашивает графический ресурс в окне. Возвращает null, когда запрашиваемый ресурс не поддерживается или недоступен.
В случае успеха возвращаемый указатель является либо прямым указателем на интерфейс (и может быть приведён, например, к ID3D12Device *) или указателем на неявную обработку, которая должна быть сначала разарреферирована (например, VkDevice dev = *static_cast<VkDevice *>(result)). Последнее необходимо, так как такие обработчики могут иметь размеры, отличные от указателя.
Примечание: Владение возвращаемым указателем никогда не передаётся вызывающей стороне.
Примечание: Эта функция должна вызываться только в потоке отрисовки.
[virtual] void *QSGRendererInterface::getResource(QQuickWindow *window, const char *resource) const
Запрашивает графический ресурс. resource — это ключ, специфичный для бэкенда. Это позволяет поддерживать любые будущие ресурсы, которые не перечислены в перечислении Resource.
Примечание: Владение возвращаемым указателем никогда не передаётся вызывающей стороне.
Примечание: Эта функция должна вызываться только в потоке отрисовки.
[pure virtual] GraphicsApi QSGRendererInterface::graphicsApi() const
Возвращает графический API, используемый графическим движком Qt Quick.
Примечание: Эта функция может вызываться в любом потоке.
[pure virtual] ShaderCompilationTypes QSGRendererInterface::shaderCompilationType() const
Возвращает битовую маску подходов к компиляции шейдеров, поддерживаемых бэкендом Qt Quick, используемым приложением.
Примечание: Эта функция может вызываться в любом потоке.
См. также QtQuick::GraphicsInfo.
[pure virtual] ShaderSourceTypes QSGRendererInterface::shaderSourceType() const
Возвращает битовую маску поддерживаемых способов предоставления источников шейдеров в элементах ShaderEffect.
Примечание: Эта функция может вызываться в любом потоке.
См. также QtQuick::GraphicsInfo.
[pure virtual] 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.9/qsgrendererinterface.html