このページでは

シーングラフの適応

シーングラフの適応についてQt Quick

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

Qt 5.8以降、Qt Quick はソフトウェアレンダリングおよびOpenVGによるレンダリングもサポートするようになりました。これは、プラグイン(openvg)の形式、あるいはQt Quick ライブラリに組み込まれた機能(ソフトウェア)という形で、追加のシーングラフ・アダプテーションを実装することで実現されています。デフォルトのアダプテーションは、引き続き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が利用可能なプラットフォームでは、シーングラフがプラットフォームに応じた選択を行います。これを望まない場合、アプリケーションは環境変数QSG_RHI_BACKEND を設定するか、QQuickWindow::setGraphicsApi()をQSGRendererInterface::GraphicsApi と組み合わせて使用することで、指定したグラフィックスAPIを強制的に使用させることができます。

別のアダプテーションへの切り替えは、次の2つの方法で実現できます:

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

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

どのバックエンドが使用されているかを確認するには、QSG_INFO 環境変数またはqt.scenegraph.general ロギングカテゴリを介して、基本的なシーングラフ情報のロギングを有効にできます。これにより、アプリケーションの起動時に、デバッグ出力に一部の情報が表示されるようになります。

注: OpenGLとVulkanの両方が無効化されたQtビルドでは 、デフォルトの適応設定はsoftware となります。ただし、WindowsおよびmacOSでは、それぞれ常にDirect 3DまたはMetalのサポートが有効になっているため、この設定は適用されません。

注:通常 、デフォルト以外の適応方式には、OpenGLと100%互換性のある機能セットを提供することはまずないため、一連の制限が伴います。ただし、これらの適応方式は、特定の分野において独自の利点をもたらす場合があります。さまざまな適応方式の詳細については、以下のセクションを参照してください。

デフォルトの適応

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

ソフトウェア適応

ソフトウェア適応は、 Qt Quick 2向けの代替レンダラーであり、ラスタライズ・ペイント・エンジンを使用してシーングラフの内容をレンダリングします。詳細については、「ソフトウェア適応」を参照してください。

OpenVG

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

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