Qt Quick 3D グラフィックス要件
サポートされているグラフィックス API、バージョン、シェーディング言語
Qt Quick 3D は、Qt 6.0 の Qt Quick でサポートされているすべてのグラフィック API とシェーディング言語での動作をサポートしています。特にOpenGLとOpenGL ESについては、Qt Quick 3Dの方がQt Quick 3Dよりも必要なバージョンが高い場合があります。
- OpenGL3.0 以上。OpenGL 3.3 以上を強く推奨します。
- OpenGL ES2.0 以上、OpenGL ES 3.0 以上を強く推奨
- Direct3D 11.1
- Direct3D 12
- Vulkan1.0以上
- Metal1.2以上
シェーダパイプラインは 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 はレンダリングやウィンドウの初期化を独自に行わず、QQuickWindow やQQuickView 、Window QML タイプに依存するため、Qt Quick Scene Graphに適用されるグラフィックス API の選択に関連するすべてが Qt Quick 3D にも適用されます。以下に示す特定の環境変数を設定することで、シーングラフの動作を制御することができます:
環境変数 | 設定可能な値 | 説明 |
---|---|---|
QSG_RHI_BACKEND | vulkan metal , , 、opengl d3d11 d3d12 | 特定のRHIバックエンドを要求します。デフォルトでは、この変数または同等のC++ APIによって上書きされない限り、ターゲットとなるグラフィックスAPIがプラットフォームに基づいて選択されます。現在のデフォルトは、WindowsではDirect3D 11、macOSではMetal、それ以外ではOpenGLです。 |
QSG_RHI_DEBUG_LAYER | 1 | 該当する場合(Vulkan、Direct3D)、グラフィックスAPI実装のデバッグおよび/または検証レイヤーを有効にします(利用可能な場合)。 |
QSG_INFO | 1 | OpenGL ベースのレンダリングパスと同様に、これを設定すると、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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。