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 |
- QVulkanFunctions는 3D 렌더링의 일부입니다.
상세 설명
Qt 및 Qt 애플리케이션은 기본적으로 어떤 Vulkan 라이브러리에도 링크되지 않습니다. 대신, 모든 함수는 실행 시점에 동적으로 해결됩니다. 각 QVulkanInstance 는 QVulkanInstance::functions()를 통해 가져올 수 있는 QVulkanFunctions 객체를 제공합니다. 이 객체에는 내부 디스패칭으로 인해 발생할 수 있는 오버헤드를 방지하기 위해 장치 수준 함수가 포함되어 있지 않습니다. 대신, 장치나 장치의 디스패치 가능한 자식 객체에 의존하는 함수들은 QVulkanDeviceFunctions 및 QVulkanInstance::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 명령을 호출할 수 있습니다.
보안 고려 사항
QVulkanFunctions는 Vulkan API를 있는 그대로 노출하는 얇은 디스패치 계층입니다. 인수는 신뢰할 수 있는 인-프로세스 플랫폼 종속성인 기본 Vulkan 구현체로 그대로 전달됩니다. Qt는 전달된 핸들, 구조체 및 포인터를 검사, 유효성 확인 또는 정제하지 않으며, 반환된 결과에 대해 어떠한 조치도 취하지 않습니다. 따라서 여기서 멤버 함수를 호출하는 것은 해당 Vulkan 명령을 직접 호출하는 것과 동일하며, Vulkan 사양의 유효한 사용 규칙이 변경 없이 적용됩니다. 이러한 규칙을 위반할 경우 Qt에서 정상적인 오류 처리가 이루어지는 것이 아니라, Vulkan 구현체에서 정의되지 않은 동작이 발생합니다.
경고: QVulkanFunctions를 통해 전달되는모든 데이터는 신뢰할 수 있는 콘텐츠여야 합니다. 애플리케이션 개발자는 애플리케이션의 일부가 아니며 개발자의 통제 범위를 벗어난 사용자 제공 콘텐츠에서 데이터를 파생시키기 전에, 그로 인해 발생할 수 있는 잠재적 영향을 신중하게 고려해야 합니다. 자세한 내용은 QVulkanInstance 를 참조하십시오.
QVulkanInstance, QVulkanDeviceFunctions, QWindow::setVulkanInstance() 및 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.