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のコマンドのメンバ関数プロトタイプは 、Vulkanヘッダーで定義されている適切なVK_VERSION_1_x を引数とするifdefed です。 したがって、これらの関数は、(アプリケーションがビルドされる)システムの 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.