Класс QVulkanDeviceFunctions
Класс QVulkanDeviceFunctions предоставляет кроссплатформенный доступ к ядру API Vulkan 1.2 на уровне устройства. Подробнее...
| Заголовок: | #include <QVulkanDeviceFunctions> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| С момента: | Qt 5.10 |
Подробное описание
Qt и приложения Qt по умолчанию не подключаются к каким-либо библиотекам Vulkan. Вместо этого все функции разрешаются динамически во время выполнения. Каждый QVulkanInstance предоставляет объект QVulkanFunctions, доступный через QVulkanInstance::functions(). Это не содержит функций уровня устройства, чтобы избежать потенциальной нагрузки внутренней диспетчеризации. Вместо этого функции, которые зависят от устройства или диспетчеризуемого дочернего объекта устройства, предоставляются через QVulkanDeviceFunctions и QVulkanInstance::deviceFunctions(). QVulkanFunctions и QVulkanDeviceFunctions вместе обеспечивают доступ ко всему ядру API Vulkan, исключая любые расширения.
Примечание: Экземпляры QVulkanDeviceFunctions не могут быть созданы напрямую.
Типичное использование:
void Window::render()
{
QVulkanInstance *inst = vulkanInstance();
QVulkanDeviceFunctions *df = inst->deviceFunctions(device);
VkResult err = df->vkAllocateCommandBuffers(device, &cmdBufInfo, &cmdBuf);
// ...
} Объект QVulkanDeviceFunctions, специфичный для предоставленного VkDevice, создается при первом вызове QVulkanInstance::deviceFunctions() с устройством. Затем объект кешируется внутри.
Для доступа к дополнительным функциям приложения могут использовать QVulkanInstance::getInstanceProcAddr() и vkGetDeviceProcAddr(). Приложения также могут решить связаться с библиотекой Vulkan напрямую, так как многие реализации экспортируют символы функций для основных команд. Смотрите документацию vkGetInstanceProcAddr для получения дополнительной информации.
См. также QVulkanInstance, QVulkanFunctions, QWindow::setVulkanInstance() и QWindow::setSurfaceType().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qvulkandevicefunctions.html