
Stay up to date with the latest marketing, sales and service tips and news.
この記事は 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でお会いしましょう!
Stay up to date with the latest marketing, sales and service tips and news.
Download the latest release here: www.qt.io/download.
Qt 6 was created to be the productivity platform for the future, with next-gen 2D & 3D UX and limitless scalability.
Find webinars, use cases, tutorials, videos & more at resources.qt.io
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.
Näytä tämä julkaisu Instagramissa.Henkilön Qt (@theqtcompany) jakama julkaisu