QVulkanDeviceFunctions Class
QVulkanDeviceFunctions 클래스는 장치 수준의 핵심 Vulkan 1.3 API에 대한 크로스 플랫폼 접근 기능을 제공합니다. 더 보기...
| 헤더: | #include <QVulkanDeviceFunctions> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
- QVulkanDeviceFunctions는 3D 렌더링의 일부입니다.
상세 설명
Qt 및 Qt 애플리케이션은 기본적으로 어떤 Vulkan 라이브러리에도 링크되지 않습니다. 대신, 모든 함수는 실행 시점에 동적으로 해결됩니다. 각 ` QVulkanInstance `는 ` QVulkanInstance::functions()`를 통해 가져올 수 있는 ` QVulkanFunctions ` 객체를 제공합니다. 이는 내부 디스패칭으로 인해 발생할 수 있는 오버헤드를 피하기 위해 디바이스 수준 함수를 포함하지 않습니다. 대신, 디바이스나 디바이스의 디스패치 가능한 자식 객체에 의존하는 함수들은 QVulkanDeviceFunctions 및 QVulkanInstance::deviceFunctions()를 통해 노출됩니다. QVulkanFunctions 와 QVulkanDeviceFunctions는 확장 기능을 제외한 전체 핵심 Vulkan API에 대한 액세스를 함께 제공합니다.
참고: QVulkanDeviceFunctions 인스턴스는 직접 생성할 수 없습니다.
일반적인 사용법은 다음과 같습니다.
void Window::render()
{
QVulkanInstance *inst = vulkanInstance();
QVulkanDeviceFunctions *df = inst->deviceFunctions(device);
VkResult err = df->vkAllocateCommandBuffers(device, &cmdBufInfo, &cmdBuf);
// ...
}QVulkanInstance::deviceFunctions()가 해당 디바이스를 인수로 받아 처음 호출될 때, 제공된 VkDevice에 특화된 QVulkanDeviceFunctions 객체가 생성됩니다. 이 객체는 이후 내부적으로 캐시됩니다.
추가 함수에 액세스하려면 애플리케이션에서 ` QVulkanInstance::getInstanceProcAddr()` 및 `vkGetDeviceProcAddr()`를 사용할 수 있습니다. 또한 많은 구현체에서 핵심 명령에 대한 함수 심볼을 내보내므로, 애플리케이션은 Vulkan 라이브러리에 직접 링크할 수도 있습니다. 자세한 내용은 ` vkGetInstanceProcAddr`의 매뉴얼 페이지를 참조하십시오.
보안 고려 사항
QVulkanDeviceFunctions는 Vulkan API를 있는 그대로 노출하는 얇은 디스패치 계층입니다. 인수는 신뢰할 수 있는 인-프로세스 플랫폼 종속성인 기본 Vulkan 구현체로 그대로 전달됩니다. Qt는 전달된 핸들, 구조체 및 포인터를 검사, 유효성 확인 또는 정제하지 않으며, 반환된 결과에 대해 어떠한 조치도 취하지 않습니다. 여기에는 특히 모든 리소스 생성, 메모리 매핑 및 명령 버퍼 구축 명령이 포함됩니다. 따라서 여기서 멤버 함수를 호출하는 것은 해당 Vulkan 명령을 직접 호출하는 것과 동일하며, Vulkan 사양에 명시된 유효한 사용 규칙이 그대로 적용됩니다. 이를 위반할 경우 Qt에서 정상적인 오류 처리 대신 Vulkan 구현체에서 정의되지 않은 동작이 발생합니다.
경고: QVulkanDeviceFunctions를 통해 전달되는모든 데이터는 신뢰할 수 있는 콘텐츠여야 합니다. 애플리케이션 개발자는 애플리케이션의 일부가 아니며 개발자의 통제 범위를 벗어난 사용자 제공 콘텐츠에서 데이터를 파생하기 전에 잠재적인 영향을 신중하게 고려해야 합니다. 자세한 내용은 QVulkanInstance 을 참조하십시오.
또한 QVulkanInstance, QVulkanFunctions, 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.