QVulkanFunctions Class

QVulkanFunctions 클래스는 인스턴스 레벨의 핵심 Vulkan 1.3 API에 대한 크로스 플랫폼 액세스를 제공합니다. 더 보기...

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

자세한 설명

Qt 및 Qt 애플리케이션은 기본적으로 Vulkan 라이브러리에 링크하지 않습니다. 대신 모든 함수는 런타임에 동적으로 해결됩니다. 각 QVulkanInstanceQVulkanInstance::functions()을 통해 검색할 수 있는 QVulkanFunctions 객체를 제공합니다. 여기에는 내부 디스패치의 잠재적 오버헤드를 피하기 위해 디바이스 수준 함수가 포함되어 있지 않습니다. 대신, 장치에 의존하는 함수 또는 장치의 디스패치 가능한 자식 객체는 QVulkanDeviceFunctionsQVulkanInstance::deviceFunctions()을 통해 노출됩니다. QVulkanFunctions와 QVulkanDeviceFunctions 을 함께 사용하면 확장을 제외한 전체 핵심 Vulkan API에 액세스할 수 있습니다.

참고: QVulkanFunctions 인스턴스는 직접 생성할 수 없습니다.

일반적인 사용법은 다음과 같습니다:

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

참고: 윈도우 시스템 인터페이스(WSI) 세부 사항 및 확장은 제외됩니다. 이 클래스는 인스턴스 생성, 소멸 및 함수 확인을 제외한 핵심 Vulkan 명령만 다루며, 이러한 기능은 QVulkanInstance 자체에서 다루기 때문입니다.

추가 함수에 액세스하려면 애플리케이션은 QVulkanInstance::getInstanceProcAddr() 및 vkGetDeviceProcAddr()을 사용할 수 있습니다. 적절한 로더가 있는 플랫폼은 일반적으로 핵심 명령에 대한 함수 심볼을 내보내므로 애플리케이션이 Vulkan 라이브러리에 직접 연결할 수도 있습니다. 자세한 내용은 vkGetInstanceProcAddr의 매뉴얼 페이지를 참조하십시오.

참고: Vulkan 1.1, 1.2 및 1.3 명령의 멤버 함수 프로토타입은 ifdefed 와 Vulkan 헤더에 정의된 적절한 VK_VERSION_1_x 입니다. 따라서 이러한 함수는 (애플리케이션이 빌드된) 시스템의 Vulkan 헤더가 충분히 새롭고 1.1, 1.2 또는 1.3 Vulkan API 정의가 포함된 경우에만 애플리케이션에서 호출할 수 있습니다. 소스에서 Qt를 빌드할 때 1.1, 1.2, 1.3 API 명령어 해결을 지원하는 Qt 빌드를 얻으려면 빌드 환경의 Vulkan 헤더도 1.1, 1.2, 1.3과 호환되어야 한다는 추가적인 결과가 있습니다. 이 조건 중 어느 것도 충족되지 않으면 애플리케이션은 QVulkanFunctions 및 QVulkanDeviceFunctions 를 통해서만 Vulkan 1.0 명령을 호출할 수 있습니다.

QVulkanInstance, QVulkanDeviceFunctions, QWindow::setVulkanInstance() 및 QWindow::setSurfaceType()도 참조하세요 .

© 2025 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.