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

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

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

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

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

グラフィックス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 はサポートされていません。

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