QOpenGLVersionFunctionsFactory Class

指定されたバージョンとプロファイルのOpenGL関数へのアクセスを提供します。詳細...

Header: #include <QOpenGLVersionFunctionsFactory>
CMake: find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmake: QT += opengl
Since: Qt 6.0

静的パブリックメンバー

QAbstractOpenGLFunctions *get(const QOpenGLVersionProfile &versionProfile = QOpenGLVersionProfile(), QOpenGLContext *context = nullptr)
TYPE *get(QOpenGLContext *context = nullptr)

詳細説明

メンバー関数ドキュメント

[static] QAbstractOpenGLFunctions *QOpenGLVersionFunctionsFactory::get(const QOpenGLVersionProfile &versionProfile = QOpenGLVersionProfile(), QOpenGLContext *context = nullptr)

versionProfile contextQAbstractOpenGLFunctions::initializeOpenGLFunctions() は、context がカレントである限り、呼び出す必要はありません。context が最新でないときにこの関数を呼び出すことも可能ですが、その場合、QAbstractOpenGLFunctions::initializeOpenGLFunctions() を後で呼び出すことによって適切な初期化を保証するのは呼び出し側の責任です。

通常、結果を自動的に正しい型にキャストするために、この関数のテンプレート版を使用します。

[static] template <typename TYPE> TYPE *QOpenGLVersionFunctionsFactory::get(QOpenGLContext *context = nullptr)

この関数はget()をオーバーロードします。

このコンテキストのバージョンとプロファイルに対応するすべての関数へのアクセスを提供するオブジェクトへのポインタを返します。context が現在のものである限り、QAbstractOpenGLFunctions::initializeOpenGLFunctions() を呼び出す必要はありません。context が最新でないときにこの関数を呼び出すことも可能ですが、その場合、QAbstractOpenGLFunctions::initializeOpenGLFunctions() を後で呼び出して適切な初期化を保証するのは呼び出し側の責任です。

通常は、この関数のテンプレート版を使用して、結果を自動的に正しい型にキャストします。

auto funcs = QOpenGLVersionFunctionsFactory::get<QOpenGLFunctions_3_3_Core>(context);
if (!funcs) {
    qFatal("Could not obtain required OpenGL context version");
}

コンテキストが作成されたのとは異なるバージョンやプロファイルの関数オブジェクトを要求することができます。これを行うには、この関数のテンプレート版を使用して、テンプレートパラメータとして希望する関数オブジェクトの型を指定するか、QOpenGLVersionProfile オブジェクトを非テンプレート関数の引数として渡します。

他のバージョンやプロファイルの関数オブジェクトへのリクエストは失敗する可能性があり、その場合はnullptr を返すことに注意してください。関数オブジェクトの生成に失敗する可能性がある状況とは、このコンテキストのバージョンやプロファイルにない関数を要求したために要求を満たすことができない場合です。例えば

  • 3.3コアプロファイルの関数オブジェクトを要求すると、成功します。
  • 3.3互換性プロファイル関数オブジェクトを要求すると失敗します。非推奨関数の解決に失敗するでしょう。
  • 4.3 コア・プロファイル関数オブジェクトを要求すると失敗します。バージョン4.0-4.3で導入された新しいコア関数の解決に失敗するでしょう。
  • 3.1の関数オブジェクトを要求すると成功します。3.1には3.3コアにないものはありません。

このメソッドで関数オブジェクトを作成した場合、QOpenGLContext がオブジェクトの所有権を保持することに注意してください。これは、オブジェクトのキャッシュと共有を可能にするためです。

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