Spec-Zone.ru › Qt

Класс QQuickGraphicsConfiguration

Класс QQuickGraphicsConfiguration является контейнером для параметров низкоуровневой графики, которые могут влиять на то, как подлежащий графический API, такой как Vulkan, инициализируется графической подсистемой Qt Quick. Он также может управлять определёнными аспектами рендерера сцены. Подробнее...

Заголовок: #include <QQuickGraphicsConfiguration>
CMake: find_package(Qt6 COMPONENTS Quick REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick
С момента: Qt 6.0
  • Список всех членов, включая унаследованные

Открытые функции

QQuickGraphicsConfiguration()
~QQuickGraphicsConfiguration()
QByteArrayList deviceExtensions() const
bool isDepthBufferEnabledFor2D() const
void setDepthBufferFor2D(bool enable)
void setDeviceExtensions(const QByteArrayList &extensions)

Статические открытые члены

QByteArrayList preferredInstanceExtensions()

Подробное описание

При создании и отображении QQuickWindow, использующего Vulkan для рендеринга, экземпляр Vulkan (VkInstance), физическое устройство (VkPhysicalDevice), устройство (VkDevice) и связанные объекты (очереди, пулы) инициализируются через API Vulkan. То же самое в основном верно и при использовании QQuickRenderControl для перенаправления рендеринга в пользовательскую целевую область, например, в текстуру. Хотя создание QVulkanInstance находится под управлением приложения, инициализация других графических объектов происходит таким же образом в QQuickRenderControl::initialize() как и на экране с QQuickWindow.

Для большинства приложений дополнительная настройка не требуется, потому что Qt Quick предоставляет разумные значения по умолчанию для многих параметров низкоуровневой графики, например, для включения расширений устройств.

Однако это не всегда будет достаточно. В сложных случаях, когда интегрируется прямой Vulkan или другой графический API, или при интеграции с внешним 3D или VR движком, таким как OpenXR, приложение захочет указать собственный набор настроек, когда дело доходит до деталей, таких как включение расширений устройств.

Это обеспечивает данный класс. Он позволяет, например, указать список расширений устройства, который затем используется графической подсистемой при использовании Vulkan или графических API, где этот концепт применим. В случаях, когда некоторые концепции неприменимы, связанные параметры просто игнорируются.

Другая категория настроек связана с рендерером графической подсистемы. В некоторых случаях приложения могут захотеть управлять определённым поведением, таким как использование буфера глубины при рендеринге 2D-контента. В Qt 5 такие параметры либо вообще не были управляемы, либо управлялись переменными среды. В Qt 6 класс QQuickGraphicsConfiguration предоставляет новое место для этих параметров, сохраняя поддержку устаревших переменных среды, где это применимо.

Примечание: Установка QQuickGraphicsConfiguration на QQuickWindow должна происходить достаточно рано, до первой инициализации графической подсистемы для этого окна. В случае окон на экране это означает, что вызов должен происходить до вызова show() для QQuickWindow или QQuickView. С QQuickRenderControl конфигурация должна быть завершена до вызова initialize().

См. также QQuickWindow::setGraphicsConfiguration(), QQuickWindow и QQuickRenderControl.

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

QQuickGraphicsConfiguration::QQuickGraphicsConfiguration()

Создаёт QQuickGraphicsConfiguration по умолчанию, который не указывает никаких дополнительных параметров для графической подсистемы.

QQuickGraphicsConfiguration::~QQuickGraphicsConfiguration()

Деструктор.

QByteArrayList QQuickGraphicsConfiguration::deviceExtensions() const

Возвращает список запрошенных дополнительных расширений устройства.

См. также setDeviceExtensions().

bool QQuickGraphicsConfiguration::isDepthBufferEnabledFor2D() const

Возвращает true, если использование буфера глубины включено для 2D-контента.

По умолчанию значение равно true, если переменная среды QSG_NO_DEPTH_BUFFER не установлена.

[static, since 6.1] QByteArrayList QQuickGraphicsConfiguration::preferredInstanceExtensions()

Возвращает список расширений экземпляра Vulkan, которые Qt Quick предпочитает включать в VkInstance.

В большинстве случаев Qt Quick отвечает за создание QVulkanInstance. Тогда эта функция неактуальна. С другой стороны, при использовании QQuickRenderControl в сочетании с рендерингом на основе Vulkan приложение должно создать QVulkanInstance и связать его с (внеэкранным) QQuickWindow. В этом случае ожидается, что приложение запросит список расширений экземпляра для включения и передаст их в QVulkanInstance::setExtensions() перед вызовом QVulkanInstance::create().

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

void QQuickGraphicsConfiguration::setDepthBufferFor2D(bool enable)

Устанавливает использование буфера глубины для 2D-контента в enable. При отключении графическая подсистема Qt Quick никогда не записывает в буфер глубины.

По умолчанию значение равно true, если переменная среды QSG_NO_DEPTH_BUFFER не установлена.

Значение true по умолчанию является наиболее оптимальным для подавляющего большинства сцен. Отключение записи в буфер глубины снижает эффективность кэширования графической подсистемы.

Однако есть случаи, когда разрешение записи 2D-контента в буфер глубины нежелательно. Рассмотрим 3D-сцену как "наложение" поверх 2D-сцены, отрисовываемой с помощью Qt Quick 3D с использованием View3D с renderMode установленным в Overlay. В этом случае заполнение буфера глубины 2D-контентом может привести к непредсказуемым результатам. Это происходит потому, что способ, которым рендерер 2D-графической подсистемы генерирует и обрабатывает значения глубины, не обязательно совместим с тем, как работает 3D-сцена. Это может привести к конфликтам значений глубины, столкновениям и непредвиденным ошибкам проверки глубины. Поэтому надёжный подход здесь состоит в вызове этой функции со значением enable, равным false, и отключении записи в буфер глубины для 2D-контента в QQuickWindow.

Примечание: Этот флаг не полностью идентичен установке переменной среды QSG_NO_DEPTH_BUFFER. Этот флаг не управляет наличием буферов глубины/шаблонов. Скорее, он относится к конвейеру рендеринга. Чтобы полностью отключить наличие привязок глубины/шаблона, установите QSG_NO_DEPTH_BUFFER и QSG_NO_STENCIL_BUFFER. Однако имейте в виду, что такое QQuickWindow и любые слои элементов в нём могут быть несовместимы с элементами, такими как View3D с определёнными режимами работы, потому что 3D-контент требует буфера глубины. Вызов этой функции всегда безопасен, но может означать, что ресурсы, такие как буферы глубины, создаются, даже если они не используются активно.

void QQuickGraphicsConfiguration::setDeviceExtensions(const QByteArrayList &extensions)

Устанавливает список дополнительных extensions для включения на графическом устройстве (например, VkDevice).

При рендеринге с графическим API, где этот концепт не применим, extensions будут проигнорированы.

Примечание: Список указывает дополнительные расширения. Qt Quick всегда включает расширения, необходимые для работы графической подсистемы.

См. также deviceExtensions().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qquickgraphicsconfiguration.html

Spec-Zone.ru

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