Spec-Zone.ru › Qt 6.0

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

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

При создании и отображении 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 не установлена.

void QQuickGraphicsConfiguration::setDepthBufferFor2D(bool enable)

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

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

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

Однако существуют случаи, когда разрешение 2D-контенту записывать в буфер глубины нежелательно. Рассмотрим 3D-сцену как «наложение» поверх 2D-сцены, рендер которой выполняется с помощью Qt Quick 3D, используя View3D со значением View3D::renderMode}{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.0/qquickgraphicsconfiguration.html

Spec-Zone.ru

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