Spec-Zone.ru › Qt 5.9

Класс 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

Spec-Zone.ru

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