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); // ... }
注: 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()も参照してください 。
© 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.