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 Graphsに適用されるグラフィックス 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 Quicks のシーングラフを初期化するときにシステム情報を表示します。これはトラブルシューティングに非常に役立ちます。 |
常に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以外のGraphical 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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。