En esta página

QVulkanFunctions Class

La clase QVulkanFunctions proporciona acceso multiplataforma al núcleo de la API Vulkan 1.3 a nivel de instancia. Más...

Cabecera: #include <QVulkanFunctions>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

Descripción Detallada

Qt y las aplicaciones Qt no enlazan con ninguna librería Vulkan por defecto. En su lugar, todas las funciones se resuelven dinámicamente en tiempo de ejecución. Cada QVulkanInstance proporciona un objeto QVulkanFunctions recuperable a través de QVulkanInstance::functions(). Esto no contiene funciones a nivel de dispositivo para evitar la sobrecarga potencial de un envío interno. En su lugar, las funciones que dependen de un dispositivo, o de un objeto hijo despachable de un dispositivo, se exponen a través de QVulkanDeviceFunctions y QVulkanInstance::deviceFunctions(). QVulkanFunctions y QVulkanDeviceFunctions juntos proporcionan acceso al núcleo completo de la API Vulkan, excluyendo cualquier extensión.

Nota: Las instancias de QVulkanFunctions no pueden ser construidas directamente.

El uso típico es el siguiente:

void Window::init()
{
    QVulkanInstance *inst = vulkanInstance();
    QVulkanFunctions *f = inst->functions();
    // ...
    uint32_t count = 0;
    VkResult err = f->vkEnumeratePhysicalDevices(inst->vkInstance(), &count, nullptr);
    // ...
}

Nota: Se excluyen las especificaciones y extensiones de la interfaz del sistema de ventanas (WSI). Esta clase sólo cubre los comandos principales de Vulkan, con la excepción de la creación y destrucción de instancias y la resolución de funciones, ya que dicha funcionalidad está cubierta por la propia QVulkanInstance.

Para acceder a funciones adicionales, las aplicaciones pueden utilizar QVulkanInstance::getInstanceProcAddr() y vkGetDeviceProcAddr(). Las aplicaciones también pueden decidir enlazar a una librería Vulkan directamente, ya que las plataformas con un cargador apropiado normalmente exportarán símbolos de función para los comandos del núcleo. Ver la página man de vkGetInstanceProcAddr para más información.

Nota: Los prototipos de funciones miembro para los comandos Vulkan 1.1, 1.2 y 1.3 son ifdefed con el VK_VERSION_1_x apropiado que está definido por las cabeceras Vulkan. Como tal, estas funciones sólo serán invocables por una aplicación cuando la cabecera Vulkan del sistema (sobre la que se construye la aplicación) sea lo suficientemente nueva y contenga definiciones de API Vulkan 1.1, 1.2, o 1.3. Cuando se construye Qt desde el código fuente, esto tiene una consecuencia adicional: las cabeceras Vulkan en el entorno de construcción también deben ser compatibles con 1.1, 1.2, y 1.3 para obtener una construcción Qt que soporte la resolución de los comandos API 1.1, 1.2, y 1.3. Si no se cumple ninguna de estas condiciones, las aplicaciones sólo podrán llamar a los comandos Vulkan 1.0 a través de QVulkanFunctions y QVulkanDeviceFunctions.

Véase también QVulkanInstance, QVulkanDeviceFunctions, QWindow::setVulkanInstance(), y QWindow::setSurfaceType().

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.