Класс QSGRendererInterface
Интерфейс, предоставляющий доступ к некоторым внутренним данным API графики, специфичным для сцены. Подробнее...
| Заголовок: | #include <QSGRendererInterface> |
| qmake: | QT += quick |
| С момента: | 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 } |
Функции публичного доступа
| Виртуальный | ~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 |
Используется 2D рендерер Qt Quick |
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 |
Документация по функциям членов
Деструктор 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/archives/qt-5.11/qsgrendererinterface.html