Qt Quick 3Dグラフィックス要件

サポートされるグラフィックス API、バージョン、シェーディング言語

Qt Quick 3D は、Qt 6.0 の でサポートされているすべてのグラフィックス API とシェーディング言語での動作をサポートしています。特にOpenGLとOpenGL ESについては、 よりも 3D の方がバージョン要件が高い場合があります。Qt Quick Qt Quick Qt Quick

シェーダパイプラインは Qt 6 の標準的なアプローチに基づいています。Vulkan 互換の GLSL シェーダコードは SPIR-V にコンパイルされ、GLSL、HLSL、MSL のソースコードに変換されます。詳細はQtShader Toolsモジュールのドキュメントを参照してください。

Qt Quick 3D は、上記のグラフィックス API を直接使用しません。むしろ、 と同様に Qt Rendering Hardware Interface abstractions を使用します。Qt Quick

グラフィックスAPIの選択

Qt Quick 3D は、レンダリングやウィンドウを独自に初期化するのではなく、QQuickWindowQQuickViewWindow QML タイプに依存するため、Qt Quick Scene Graphに適用されるグラフィックス API の選択に関するすべてが、Qt Quick 3D にも適用されます。シーングラフの動作は、以下のような特定の環境変数を設定することで制御することが可能です:

環境変数可能な値説明
QSG_RHI_BACKENDvulkan metal, , 、opengl d3d11 d3d12特定のRHIバックエンドを要求します。デフォルトでは、この変数または同等のC++ APIによって上書きされない限り、ターゲットとなるグラフィックスAPIはプラットフォームに基づいて選択されます。現在のデフォルトは、WindowsではDirect3D 11、macOSではMetal、それ以外ではOpenGLです。
QSG_RHI_DEBUG_LAYER1該当する場合(Vulkan、Direct3D)、グラフィックスAPI実装のデバッグおよび/または検証レイヤーを有効にします(利用可能な場合)。
QSG_INFO1OpenGLベースのレンダリングパスと同様に、これを設定すると、Qt Quick シーングラフを初期化するときにシステム情報を表示できます。これはトラブルシューティングに非常に役立ちます。

常に1つのグラフィックAPIで実行したいアプリケーションは、C++と同様に、QSG_RHI_BACKEND enivronment変数でこれを要求できます。たとえば、QQuickWindow を構築する前にmain() の初期に行われる以下の呼び出しは、Vulkan の使用を強制します(そうでない場合は失敗します)。

QQuickWindow::setGraphicsApi(QSGRendererInterface::Vulkan);

注: Qt Quickソフトウェア適応は、3D コンテンツではサポートされていません。

OpenGLの仕様

よく書かれたQt Quick 3Dアプリケーションは、main()関数内でQQuick3D::idealSurfaceFormat()を呼び出し、返されたQSurfaceFormat をデフォルトとして使用することが期待されています:

QSurfaceFormat::setDefaultFormat(QQuick3D::idealSurfaceFormat());

この呼び出しは、OpenGL以外のグラフィックスAPIが使用されている場合には何の効果もありませんが、APIがOpenGLである場合には、Qt Quick 3Dのニーズに最適なOpenGLコンテキストを作成することにつながるため、非常に有益です。

OpenGL ES 2.0サポート

Qt Quick 3DはOpenGL ES 2.0での実行をサポートしていますが、機能セットはかなり制限されています。以下のリストには、使用できなくなる、または機能しなくなる機能の一部が含まれています:

  • 画像ベースのライティング、ライトプローブ、スカイボックス
  • シャドウマッピング
  • スクリーン空間アンビエントオクルージョン
  • マルチサンプリング
  • 特定のポストプロセッシングエフェクト
  • GLSL ES 100にはないGLSL機能に依存するシェーダーを使用するカスタムマテリアル

注: Qt Quick 3Dは、WebAssemblyプラットフォームのOpenGL ES 3.0 / WebGL 2を必要とします。OpenGL ES 2.0 / WebGL 1はサポートされていません。

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