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