シーングラフ - QML下のMetal
Qt Quick シーン下で Metal を直接レンダリングする方法を示します。
Metal Under QML の例では、アプリケーションがQQuickWindow::beforeRendering() とQQuickWindow::beforeRenderPassRecording() シグナルを利用して、Qt Quick シーンの下にカスタム Metal コンテンツを描画する方法を示します。このシグナルは、シーングラフがレンダリングを開始する前に、各フレームの開始時に発行されます。したがって、このシグナルへの応答として行われる Metal の描画コールは、Qt Quick のアイテムの下にスタックされます。シーングラフが使用するレンダーコマンドエンコーダと同じコマンドバッファに、カスタムメタルコマンドが記録されるため、2つのシグナルがあります。beforeRenderPassRecording() にも接続することで、アプリケーションは必要なネイティブオブジェクトにアクセスすることができる。
別の方法として、Qt Quickシーンの上にMetalコンテンツをレンダリングしたいアプリケーションは、QQuickWindow::afterRendering() とQQuickWindow::afterRenderPassRecording() シグナルに接続することでレンダリングすることができます。
この例では、Metal のレンダリングに影響を与える値を QML に公開する方法についても説明します。QMLファイル内のNumberAnimation を使ってスレッショルド値をアニメーション化し、この値はスクサークルを描画するMetalシェーダプログラムによって使用されます。
この例は、OpenGL Under QML、Direct3D 11 Under QML、Vulkan Under QMLの例とほぼ同じで、ネイティブAPIが異なるだけで、すべて同じカスタムコンテンツをレンダリングします。
©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。