変更点Qt OpenGL

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

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

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

非推奨クラスの削除

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

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

QOpenGL クラスの移行

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

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

既存のアプリケーション・コードはほぼ動作し続けますが、プロジェクト・ファイルに Qt OpenGLまた、Qt GUI を通して間接的にヘッダをインクルードしていた場合は、ヘッダもインクルードする必要があります。

注: 特筆すべき例外は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 のサポート追加によって軽減されます。

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