9月 13, 2017 by 鈴木 佑 | Comments
この記事は The Qt Blog の Vulkan Support in Qt 5.10 – Part 3 を翻訳したものです。
執筆: Laszlo Agocs, 2017年7月3日
過去2回の記事(パート1、パート2)では、Vulkan のインスタンスの生成まで紹介が済んでいます。今回はスクリーンに表示するところです。
このまま順調に行くと、Qt 5.10 では少なくとも5つのサンプルが提供されるでしょう。それは以下の5つで(ドキュメントはスナップショット版にリンクされています)、シンプルなもの順に羅列しています。
hellovulkancubes のサンプルが 、NVIDIA Shield TV 上の Android 7.0 で動いているところです
これらのサンプルのソースを見てみるとある共通の側面が見られます。すべてのサンプルで QWindow の派生クラスでスワップチェーンやウィンドウ固有の処理を実装している QVulkanWindow が使われています。常にあてはまるわけではないですが、QVulkanWindow は Qt アプリケーションで Vulkan での描画ができるようになるまでの時間を大幅に短縮します。
次に、さらに進んだウィンドウの制御やスワップチェーンの完全な制御をする場合はどうでしょう?もちろん対応は可能ですが、ドキュメントもちゃんと整備されている QVulkanWindow の利用よりは敷居が高くなります。それでは実際に見てみましょう。
この組み合わせはすぐに複雑になってしまうため、現時点では簡単なサンプルは提供していません。Qt 自体のソースを代わりに見ていただくのがよいでしょう。QVulkanWindow のソース の他、Vulkan を利用する QWindow を生成するような マニュアルのテストコード が存在しています。
これらによると、QWindow の派生クラスで Vulkan を利用する際の主なルールは以下のようになります
Vulkan API へのアクセスについて見てみましょう。設定項目は QVulkanInstanceのドキュメントに詳しくかいてあります。Qt のアプリケーションのほとんどのケースでは、functions() と deviceFunctions() の返り値のラッパーオブジェクト経由で core Vulakn 1.0 API が利用できることを想定しています。エクステンションについては、スワップチェーンの管理をマニュアルでする場合の初期化処理は getInstanceProcAddr() が利用できます。
この方法ですべてのサンプルとテストは実装されていますが、必須ではありません。LIBS += -vulkan のアプローチや、その他のお世話用のライブラリの利用の選択も常に可能です。QVulkanInstance のドキュメントの中の、Using C++ Bindings for Vulkansection も合わせてご覧ください。
では、今回はここまで。パート4でお会いしましょう!
Download the latest release here: www.qt.io/download.
Qt 6.9 is now available, with new features and improvements for application developers and device creators.
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.
5 17, 2025
本稿は「Security advisory: Improper Link Resolution Before File Access in..
5 5, 2025
本稿は「An Experiment with Vector Maps」の抄訳です。 はじめに かなり長い間、QtLocation..
4 12, 2025
本稿は「Security advisory: A Heap-buffer-overflow issue in..