Qt OpenGLの変更点

Qt 6 は、フレームワークをより効率的で使いやすくするための意識的な努力の結果です。

私たちは各リリースにおいて、すべてのパブリックAPIのバイナリとソースの互換性を維持しようと努めています。しかし、Qt をより良いフレームワークにするために避けられない変更もあります。

このトピックでは、Qt OpenGLにおけるそれらの変更を要約し、それらを扱うためのガイダンスを提供します。

非推奨クラスの削除

Qt OpenGLモジュールは Qt 5 の存続期間中、非推奨とされ、Qt 6 では含まれていたクラスが削除されました。

これは特に、QGL で始まるクラスを指します。

QOpenGL クラスの移行

Qt 5では、OpenGLをサポートするクラスの代替セットがQt Guiに追加されました。これは、Qt のグラフィックスの基礎となるクロスプラットフォームのグラフィックス API として OpenGL をサポートするためでした。

Qt 6 では、これらはQt OpenGLモジュールに移行されました。これらはまだ使用可能で、OpenGLに直接依存しているアプリケーションでは完全にサポートされています。しかし、QtはDirect3D、Metal、Vulkanといった他のグラフィックスAPIをサポートするように拡張されたため、これらはもはや基礎的なものとはみなされません。

既存のアプリケーションコードはほぼそのまま動作しますが、プロジェクトファイルにQt OpenGL を含める必要があります。

注: 特筆すべき例外はQOpenGLContext で、これはまだ Qt Gui に存在します。

QOpenGLWidgetsクラス

もう1つの例外は、QOpenGLWidget 。これは、Qt OpenGL Widgets という新しいモジュールに移動したので、そこからインクルードしてください。

RHIのOpenGLバックエンドの選択

プロジェクトファイルを調整し、ヘッダーをインクルードすることに加えて、Qt Quickで作業するときにこの機能を使用するために、アプリケーションはレンダリングバックエンドをOpenGLに手動で設定する必要があります。デフォルトでは、Qtはターゲットプラットフォームで最も適切なグラフィックスAPIを使用します。詳細はRHIレンダリングドキュメントを参照してください。

ANGLE の削除

Windows では、サードパーティの OpenGL ES から Direct 3D へのトランスレータである ANGLE が Qt 6 に含まれなくなりました。これは、Qt::AA_UseOpenGLES と環境変数QT_OPENGL=angle がもはや何の効果も持たないことを意味します。ダイナミック OpenGL ビルドでは、OpenGL-proper の初期化に失敗しても ANGLE への自動フォールバックはありません。OpenGLを直接使用するQWindow またはQWidget ベースのアプリケーション(たとえばQOpenGLWidget 経由)の場合、これはOpenGL-properが実行時の唯一の選択肢であることを意味します。しかし、ビルド済みの Qt パッケージに同梱されている Mesa llvmpipe のような、純粋なソフトウェア OpenGL 実装を使用することはできます。

Qt Quick および Qt Quick 3D アプリケーションでは、Qt 6 は OpenGL に加えて Direct 3D 11、Vulkan、Metal のサポートを導入しています。Windows では、Qt 6 のデフォルトは Direct 3D であるため、ANGLE の削除による影響は、他のグラフィックス API のサポート追加によって軽減されます。

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