このページでは

QOpenGLVersionFunctionsFactory Class

指定されたバージョンおよびプロファイルの OpenGL 関数を利用できるようにします。詳細...

ヘッダー: #include <QOpenGLVersionFunctionsFactory>
CMake: find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmake: QT += opengl
以下のように: 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)

context のversionProfile のすべての関数へのアクセスを提供するオブジェクトへのポインタを返します。context が有効な限り、QAbstractOpenGLFunctions::initializeOpenGLFunctions()を呼び出す必要はありません。context が現在のオブジェクトでない場合でもこの関数を呼び出すことは可能ですが、その場合は、呼び出し側がその後QAbstractOpenGLFunctions::initializeOpenGLFunctions()を呼び出して、適切な初期化が行われるようにする責任があります。

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

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

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

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

autofuncs=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 がオブジェクトの所有権を保持することに注意してください。これは、オブジェクトをキャッシュおよび共有できるようにするためです。

この関数は、QOpenGLVersionFunctionsFactory::get() をオーバーロードしています。

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