シーングラフの適応
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() を呼び出す。
以下のバックエンドがサポートされている:
- デフォルト -
"rhi"
文字列または以下に示すものとは異なるQSGRendererInterface::GraphicsApi 列挙型値で要求する。 - Software -
"software"
文字列またはQSGRendererInterface::Software enum 値でリクエスト。 - OpenVG -
"openvg"
文字列またはQSGRendererInterface::OpenVG enum 値でリクエストします。
どのバックエンドが使用されているかを調べるには、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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。