シーングラフの適応

Qt Quick におけるシーングラフの適応

Qt 5.0では、Qt Quickは常にOpenGL(OpenGL ES 2.0またはOpenGL 2.0)に依存してシーングラフを解析し、結果をレンダーターゲットにレンダリングしていました。

Qt 5.8 以降では、Qt Quick はソフトウェアでのレンダリングと OpenVG でのレンダリングもサポートしています。これは、プラグイン(openvg)または Qt Quick ライブラリ(software)に内蔵された追加のシーングラフアダプテーションによって実現されます。デフォルトのアダプテーションは、引き続きOpenGLに直接依存しています。

Qt 5.14 以降では、デフォルトのアダプテーションは、Qt GUIモジュールによって提供されるグラフィックスの抽象化レイヤ、Qt Rendering Hardware Interface (RHI) を介してレンダリングするオプションを持ちます。有効にすると、OpenGLの直接呼び出しは行われません。むしろ、シーングラフは抽象化レイヤが提供するAPIを使用してレンダリングし、それがOpenGL、Vulkan、Metal、またはDirect 3Dの呼び出しに変換されます。シェーダー処理も、シェーダーコードを一度書いてからSPIR-Vにコンパイルし、さまざまなグラフィックスAPIに適した言語に変換することで統一されます。

Qt 6.0からは、RHIベースのレンダリングモデルがデフォルトとなり、OpenGLを直接使用するオプションはありません。

アプリケーションで適応を切り替える

software とは異なり、RHI ベースのレンダラーは追加のアダプテーションではなく、常にビルトインされています。Qt 6.0 では常に有効になっています。複数のグラフィックス API が利用可能なプラットフォームでは、scenegraph はプラットフォーム固有の選択を行います。これを望まない場合、アプリケーションは、環境変数QSG_RHI_BACKEND を設定するか、QSGRendererInterface::GraphicsApi と組み合わせてQQuickWindow::setGraphicsApi() を使用することで、指定されたグラフィック API を強制することができます。

異なるアダプテーションに切り替えるには、2つの方法があります:

  • 環境変数を使用する - アプリケーションを起動する前に、環境変数QT_QUICK_BACKEND またはレガシーQMLSCENE_DEVICE を設定する。
  • C++ API を使用する - アプリケーションの main() 関数の早い段階でQQuickWindow::setSceneGraphBackend() を呼び出す。

以下のバックエンドがサポートされている:

どのバックエンドが使用されているかを調べるには、QSG_INFO 環境変数またはqt.scenegraph.general logging カテゴリを使用して、基本的なシーングラフ情報のロギングを有効にします。この結果、アプリケーションの起動中に、いくつかの情報がデバッグ出力に出力されます。

注意: OpenGL と Vulkan の両方が無効な Qt ビルドでは、デフォルトの適応はsoftware です。ただし、Windows や macOS には適用されません。これらのプラットフォームでは、それぞれ Direct 3D や Metal のサポートが常に有効になっているからです。

注意: 通常、デフォルト以外のアダプテーションは、OpenGLと100%互換性のある機能セットを提供する可能性が低いため、一連の制限を伴います。しかし、これらのアダプテーションは、特定の分野で独自の利点を提供する可能性があります。各アダプテーションの詳細については、以下のセクションを参照してください。

デフォルトの適応

OpenGL を直接使用する場合、デフォルトのアダプテーションは Qt Quick 2 の全機能を提供することができます。詳細はデフォルトの適応を参照してください。

ソフトウェア適応

ソフトウェア・アダプテーションは、ラスター・ペイント・エンジンを使用してシーン・グラフの内容をレンダリングする、Qt Quick2 の代替レンダラーです。詳細はSoftware Adaptation を参照してください。

OpenVG

OpenVG アダプテーションは、Qt Quick2 用の代替レンダラーで、OpenVG コマンドを使用してシーングラフのコンテンツをレンダリングし、ハードウェアアクセラレーションによる 2D ベクターおよびラスターグラフィックスを提供します。詳細はOpenVG アダプテーション を参照してください。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。