Spec-Zone.ru › Qt 5.14

Класс QSGRendererInterface

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

Заголовок: #include <QSGRendererInterface>
qmake: QT += quick
С момента: Qt 5.8

Этот класс был добавлен в Qt 5.8.

  • Список всех членов, включая унаследованные

Типы публичного доступа

перечисление GraphicsApi { Unknown, Software, OpenGL, Direct3D12, OpenVG, …, NullRhi }
перечисление Resource { DeviceResource, CommandQueueResource, CommandListResource, PainterResource, RhiResource, …, RenderPassResource }
перечисление Тип компиляции шейдера { RuntimeCompilation, OfflineCompilation }
флаги Типы компиляции шейдеров
перечисление Тип источника шейдера { ShaderSourceString, ShaderSourceFile, ShaderByteCode }
флаги Типы источников шейдеров
перечисление Тип шейдера { UnknownShadingLanguage, GLSL, HLSL, RhiShader }

Публичные функции

virtual void * getResource(QQuickWindow *window, QSGRendererInterface::Resource resource) const
virtual void * getResource(QQuickWindow *window, const char *resource) const
virtual QSGRendererInterface::GraphicsApi graphicsApi() const = 0
virtual QSGRendererInterface::ShaderCompilationTypes типКомпиляцииШейдера() const = 0
virtual QSGRendererInterface::ShaderSourceTypes типИсточникаШейдера() const = 0
virtual QSGRendererInterface::ShaderType типШейдера() const = 0

Статические публичные члены

bool isApiRhiBased(QSGRendererInterface::GraphicsApi 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::OpenGLRhi 5 OpenGL ES 2.0 или выше через слой абстракции графики. Это значение было добавлено в Qt 5.14.
QSGRendererInterface::Direct3D11Rhi 6 Direct3D 11 через слой абстракции графики. Это значение было добавлено в Qt 5.14.
QSGRendererInterface::VulkanRhi 7 Vulkan 1.0 через слой абстракции графики. Это значение было добавлено в Qt 5.14.
QSGRendererInterface::MetalRhi 8 Metal через слой абстракции графики. Это значение было добавлено в Qt 5.14.
QSGRendererInterface::NullRhi 9 Null (без вывода) через слой абстракции графики. Это значение было добавлено в Qt 5.14.

перечисление QSGRendererInterface::Resource

Константа Значение Описание
QSGRendererInterface::DeviceResource 0 Ресурс — указатель на графическое устройство, если применимо. Например, VkDevice *, MTLDevice * или ID3D11Device *. Обратите внимание, что с Vulkan возвращаемое значение — указатель на VkDevice, а не сам дескриптор. Это связано с тем, что дескрипторы Vulkan могут не быть указателями и могут иметь размер, отличающийся от размера указателя архитектуры, поэтому простое приведение типов к/из void * неверно.
QSGRendererInterface::CommandQueueResource 1 Ресурс — указатель на очередь команд графического процессора, используемую сценаграфикой, если применимо. Например, VkQueue * или MTLCommandQueue *. Обратите внимание, что с Vulkan возвращаемое значение — указатель на VkQueue, а не сам дескриптор.
QSGRendererInterface::CommandListResource 2 Ресурс — указатель на список команд или буфер, используемые сценаграфикой, если применимо. Например, VkCommandBuffer * или MTLCommandBuffer *. Объект имеет ограниченный срок действия и валиден только во время подготовки следующего кадра сценаграфикой. Обратите внимание, что с Vulkan возвращаемое значение — указатель на VkCommandBuffer, а не сам дескриптор.
QSGRendererInterface::PainterResource 3 Ресурс — указатель на активный объект QPainter, используемый сценаграфикой при работе с программным бэкендом.
QSGRendererInterface::RhiResource 4 Ресурс — указатель на объект QRhi, используемый сценаграфикой, если применимо. Это значение было добавлено в Qt 5.14.
QSGRendererInterface::PhysicalDeviceResource 5 Ресурс — указатель на физический объект устройства, используемый сценаграфикой, если применимо. Например, VkPhysicalDevice *. Обратите внимание, что с Vulkan возвращаемое значение — указатель на VkPhysicalDevice, а не сам дескриптор. Это значение было добавлено в Qt 5.14.
QSGRendererInterface::OpenGLContextResource 6 Ресурс — указатель на QOpenGLContext, используемый сценаграфикой (в потоке отрисовки), если применимо. Это значение было добавлено в Qt 5.14.
QSGRendererInterface::DeviceContextResource 7 Ресурс — указатель на контекст устройства, используемый сценаграфикой, если применимо. Например, ID3D11DeviceContext *. Это значение было добавлено в Qt 5.14.
QSGRendererInterface::CommandEncoderResource 8 Ресурс — указатель на активный объект-кодировщик команд отрисовки, используемый сценаграфикой, если применимо. Например, MTLRenderCommandEncoder *. Этот объект имеет ограниченный срок действия и валиден только во время записи прохода отрисовки для следующего кадра сценаграфикой. Это значение было добавлено в Qt 5.14.
QSGRendererInterface::VulkanInstanceResource 9 Ресурс — указатель на QVulkanInstance, используемый сценаграфикой, если применимо. Это значение было добавлено в Qt 5.14.
QSGRendererInterface::RenderPassResource 10 Ресурс — указатель на проход отрисовки, используемый сценаграфикой, описывающий цвет и глубину/стецил-приложения и способ их использования. Например, VkRenderPass *. Это значение было добавлено в Qt 5.14.

перечисление QSGRendererInterface::ShaderCompilationTypeфлаги QSGRendererInterface::ShaderCompilationTypes

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

Тип ShaderCompilationTypes — это typedef для QFlags<ShaderCompilationType>. Он хранит результат побитового ИЛИ значений ShaderCompilationType.

перечисление QSGRendererInterface::ShaderSourceTypeфлаги QSGRendererInterface::ShaderSourceTypes

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

Тип ShaderSourceTypes — это typedef для QFlags<ShaderSourceType>. Он хранит результат побитового ИЛИ значений ShaderSourceType.

перечисление QSGRendererInterface::ShaderType

Константа Значение Описание
QSGRendererInterface::UnknownShadingLanguage 0 Пока неизвестно из-за отсутствия окна и связанной сценаграфики
QSGRendererInterface::GLSL 1 GLSL или GLSL ES
QSGRendererInterface::HLSL 2 HLSL
QSGRendererInterface::RhiShader 3 Использует объекты QShader, содержащие варианты шейдеров для нескольких языков и промежуточных форматов. Это значение было добавлено в Qt 5.14.

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

[virtual] void *QSGRendererInterface::getResource(QQuickWindow *window, QSGRendererInterface::Resource resource) const

Запрашивает графический ресурс в 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 сценаграфикой.

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

[static] bool QSGRendererInterface::isApiRhiBased(QSGRendererInterface::GraphicsApi api)

Возвращает true, если api основано на абстракции графического слоя (QRhi), а не на прямом вызове нативного графического API.

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

Эта функция была добавлена в Qt 5.14.

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

Spec-Zone.ru

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