QVulkanFunctions Class

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

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

詳細説明

Qt と Qt アプリケーションは、デフォルトではどの Vulkan ライブラリにもリンクしません。代わりに、すべての関数は実行時に動的に解決されます。各QVulkanInstance は、QVulkanInstance::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);
    // ...
}

注: Windowingシステムインターフェース(WSI)の仕様と拡張機能は除外されています。このクラスは、インスタンスの作成、破棄、関数の解決を除いて、コアVulkanコマンドのみをカバーします。そのような機能は、QVulkanInstance 自体でカバーされているからです。

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

ifdefed 注: Vulkan 1.1、1.2、1.3コマンドのメンバ関数プロトタイプは、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()も参照してください

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