Spec-Zone.ru › Qt 5.15

Класс QVulkanWindowRenderer

Класс QVulkanWindowRenderer используется для реализации специфичной для приложения логики отрисовки для QVulkanWindow. Подробнее...

Заголовок: #include <QVulkanWindowRenderer>
qmake: QT += gui
С момента: Qt 5.10

Этот класс был представлен в Qt 5.10.

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

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

виртуальный ~QVulkanWindowRenderer()
виртуальный void initResources()
виртуальный void initSwapChainResources()
виртуальный void logicalDeviceLost()
виртуальный void physicalDeviceLost()
виртуальный void preInitResources()
виртуальный void releaseResources()
виртуальный void releaseSwapChainResources()

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

Приложения обычно наследуют как QVulkanWindow, так и QVulkanWindowRenderer. Первый позволяет обрабатывать события, например, ввод, а второй — реализовывать управление ресурсами Vulkan и построение командных буферов, составляющих отрисовку приложения.

Помимо обработки событий, подкласс QVulkanWindow также отвечает за предоставление реализации для QVulkanWindow::createRenderer(). Именно здесь происходит подключение окна и рендерера. Типичная реализация просто создает новый экземпляр подкласса QVulkanWindowRenderer.

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

[virtual] QVulkanWindowRenderer::~QVulkanWindowRenderer()

Виртуальный деструктор.

[virtual] void QVulkanWindowRenderer::initResources()

Эта виртуальная функция вызывается, когда пришло время создать графические ресурсы рендерера.

В зависимости от флага QVulkanWindow::PersistentResources, ситуаций потери устройства и т. д. эта функция может вызываться более одного раза за время существования QVulkanWindow. Однако последующие вызовы всегда предваряются вызовом releaseResources().

Доступ к таким функциям, как device(), graphicsQueue() и graphicsCommandPool(), гарантируется только внутри этой функции и после нее, вплоть до вызова releaseResources().

Реализация по умолчанию пустая.

[virtual] void QVulkanWindowRenderer::initSwapChainResources()

Эта виртуальная функция вызывается, когда возможна инициализация, связанная со swapchain, фреймбуферами или renderpass. Swapchain и связанные ресурсы сбрасываются, а затем воссоздаются в ответ на события изменения размера окна, поэтому пара вызовов initResources() и releaseResources() может содержать несколько вызовов initSwapChainResources() и releaseSwapChainResources() между ними.

Доступ к таким функциям, как QVulkanWindow::swapChainImageSize(), гарантируется только внутри этой функции и после нее, до вызова releaseSwapChainResources().

Здесь также следует выполнять вычисления, зависящие от размера (например, проекционная матрица), так как эта функция вызывается при каждом изменении размера.

Реализация по умолчанию пустая.

[virtual] void QVulkanWindowRenderer::logicalDeviceLost()

Эта виртуальная функция вызывается при потере логического устройства (VkDevice), что означает, что какая-то операция завершилась неудачно с VK_ERROR_DEVICE_LOST.

Реализация по умолчанию пустая.

Обычно нет необходимости выполнять какие-либо особые действия в этой функции. QVulkanWindow автоматически освободит все ресурсы (вызывая releaseSwapChainResources() и releaseResources() по необходимости) и попытается повторно инициализировать, получив новое устройство. Если также было потеряно физическое устройство, эта попытка повторной инициализации может привести к вызову physicalDeviceLost().

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

[virtual] void QVulkanWindowRenderer::physicalDeviceLost()

Эта виртуальная функция вызывается при потере физического устройства, что означает, что создание логического устройства завершается неудачно с VK_ERROR_DEVICE_LOST.

Реализация по умолчанию пустая.

Обычно нет необходимости выполнять какие-либо особые действия в этой функции, так как QVulkanWindow автоматически повторит попытку инициализации через определённое время.

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

[virtual] void QVulkanWindowRenderer::preInitResources()

Эта виртуальная функция вызывается непосредственно перед началом графической инициализации, которая в конечном итоге вызывает initResources().

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

Вместо этого приложения могут переопределить эту функцию. Здесь и QVulkanWindow::physicalDevice(), и QVulkanInstance::surfaceForWindow() работают, но дальнейшая инициализация логического устройства ещё не произошла.

Реализация по умолчанию пустая.

[virtual] void QVulkanWindowRenderer::releaseResources()

Эта виртуальная функция вызывается, когда графические ресурсы рендерера необходимо освободить.

Реализация должна быть подготовлена к тому, что вызов этой функции может последовать вызовом initResources() в более поздний момент.

QVulkanWindow позаботится о том, чтобы устройство стало неактивным до и после вызова этой функции.

Реализация по умолчанию пустая.

[virtual] void QVulkanWindowRenderer::releaseSwapChainResources()

Эта виртуальная функция вызывается, когда необходимо освободить ресурсы, связанные со swapchain, фреймбуферами или renderpass.

Реализация должна быть подготовлена к тому, что за вызовом этой функции может последовать новый вызов initSwapChainResources() в более поздний момент.

QVulkanWindow позаботится о том, чтобы устройство стало неактивным до и после вызова этой функции.

Реализация по умолчанию пустая.

Примечание: Это последнее место, где все графические ресурсы остаются нетронутыми перед тем, как QVulkanWindow начнёт их освобождать. Поэтому крайне важно, чтобы реализации с асинхронным, потенциально многопоточным startNextFrame() выполнили блокирующее ожидание и вызов QVulkanWindow::frameReady() перед возвратом из этой функции, если есть ожидающее отправление фрейма.

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

Spec-Zone.ru

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