QVulkanDeviceFunctions Class

QVulkanDeviceFunctionsクラスは、デバイスレベルのコアVulkan 1.3 APIへのクロスプラットフォームなアクセスを提供します。詳細...

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

詳細説明

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);
    // ...
}

提供されたVkDeviceに固有のQVulkanDeviceFunctionsオブジェクトは、QVulkanInstance::deviceFunctions ()が問題のデバイスで最初に呼び出されたときに作成されます。このオブジェクトは内部的にキャッシュされます。

追加関数にアクセスするには、アプリケーションはQVulkanInstance::getInstanceProcAddr() と vkGetDeviceProcAddr() を使用できます。多くの実装がコアコマンドの関数シンボルをエクスポートしているため、アプリケーションはVulkanライブラリに直接リンクすることもできます。詳細については、vkGetInstanceProcAddrのマニュアルページを参照してください。

QVulkanInstance,QVulkanFunctions,QWindow::setVulkanInstance(),QWindow::setSurfaceType()も参照してください

本書に含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。