シーングラフの適応

シーングラフの適応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モジュールによって提供されます。有効にすると、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 の代替レンダラーで、ラスターペイントエンジンを使用してシーングラフの内容をレンダリングします。詳細は、ソフトウェア・アダプテーションを参照してください。

OpenVG

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

© 2025 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.