Spec-Zone.ru › Qt 5.12

Класс QSGRendererInterface

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

Заголовок: #include <QSGRendererInterface>
qmake: QT += quick
С момента: Qt 5.8
  • Список всех членов, включая унаследованные

Типы общего доступа

перечисление GraphicsApi { Неизвестно, Программный, OpenGL, Direct3D12, OpenVG }
перечисление Resource { Ресурс устройства, Ресурс очереди команд, Ресурс списка команд, Ресурс рисовальщика }
перечисление Тип компиляции шейдера { Компиляция во время выполнения, Компиляция офлайн }
флаги Типы компиляции шейдеров
перечисление Тип источника шейдера { Исходный код шейдера, Файл с исходным кодом шейдера, Байткод шейдера }
флаги Типы источников шейдеров
перечисление Тип шейдера { Неизвестный язык шейдинга, GLSL, HLSL }

Функции общего доступа

виртуальный ~QSGRendererInterface()
виртуальный 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 в иерархии сцен.

Интерфейсы рендеринга позволяют получить доступ к функциональности, специфичной для графического 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::Тип компиляции шейдерафлаги QSGRendererInterface::Типы компиляции шейдеров

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

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

перечисление QSGRendererInterface::Тип источника шейдерафлаги QSGRendererInterface::Типы источников шейдеров

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

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

перечисление QSGRendererInterface::Тип шейдера

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

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

[virtual] QSGRendererInterface::~QSGRendererInterface()

Удаляет экземпляр QSGRendererInterface. Деструктор является виртуальным.

[virtual] void *QSGRendererInterface::getResource(QQuickWindow *window, QSGRendererInterface::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] QSGRendererInterface::GraphicsApi QSGRendererInterface::graphicsApi() const

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

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

[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.12/qsgrendererinterface.html

Spec-Zone.ru

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