QOpenGLVersionFunctionsFactory Class
Ermöglicht den Zugriff auf OpenGL-Funktionen für eine bestimmte Version und ein bestimmtes Profil. Mehr...
Kopfzeile: | #include <QOpenGLVersionFunctionsFactory> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS OpenGL) target_link_libraries(mytarget PRIVATE Qt6::OpenGL) |
qmake: | QT += opengl |
Seit: | Qt 6.0 |
Statische öffentliche Mitglieder
QAbstractOpenGLFunctions * | get(const QOpenGLVersionProfile &versionProfile = QOpenGLVersionProfile(), QOpenGLContext *context = nullptr) |
TYPE * | get(QOpenGLContext *context = nullptr) |
Dokumentation der Memberfunktionen
[static]
QAbstractOpenGLFunctions *QOpenGLVersionFunctionsFactory::get(const QOpenGLVersionProfile &versionProfile = QOpenGLVersionProfile(), QOpenGLContext *context = nullptr)
Gibt einen Zeiger auf ein Objekt zurück, das Zugriff auf alle Funktionen für die versionProfile der context bietet. Solange die context aktuell ist, muss QAbstractOpenGLFunctions::initializeOpenGLFunctions() nicht aufgerufen werden. Es ist auch möglich, diese Funktion aufzurufen, wenn die context nicht aktuell ist, aber in diesem Fall liegt es in der Verantwortung des Aufrufers, eine korrekte Initialisierung sicherzustellen, indem er anschließend QAbstractOpenGLFunctions::initializeOpenGLFunctions() aufruft.
Normalerweise würde man die Template-Version dieser Funktion verwenden, um das Ergebnis automatisch auf den richtigen Typ zu casten.
[static]
template <typename TYPE> TYPE *QOpenGLVersionFunctionsFactory::get(QOpenGLContext *context = nullptr)
Diese Funktion überlastet get().
Gibt einen Zeiger auf ein Objekt zurück, das Zugriff auf alle Funktionen für die Version und das Profil dieses Kontexts bietet. Es besteht keine Notwendigkeit, QAbstractOpenGLFunctions::initializeOpenGLFunctions() aufzurufen, solange die context aktuell ist. Es ist auch möglich, diese Funktion aufzurufen, wenn die context nicht aktuell ist, aber in diesem Fall liegt es in der Verantwortung des Aufrufers, eine korrekte Initialisierung sicherzustellen, indem er anschließend QAbstractOpenGLFunctions::initializeOpenGLFunctions() aufruft.
Normalerweise würde man die Template-Version dieser Funktion verwenden, um das Ergebnis automatisch auf den richtigen Typ zu casten.
auto funcs = QOpenGLVersionFunctionsFactory::get<QOpenGLFunctions_3_3_Core>(context);if (!funcs) { qFatal("Could not obtain required OpenGL context version"); }
Es ist möglich, ein Funktionsobjekt für eine andere Version und ein anderes Profil anzufordern als die, für die der Kontext erstellt wurde. Dazu verwenden Sie entweder die Template-Version dieser Funktion und geben den gewünschten Funktionsobjekttyp als Template-Parameter an oder Sie übergeben ein QOpenGLVersionProfile -Objekt als Argument an die Nicht-Template-Funktion.
Beachten Sie, dass Anfragen nach Funktionsobjekten anderer Versionen oder Profile fehlschlagen können und dabei nullptr
zurückgeben. Situationen, in denen die Erstellung des Funktionsobjekts fehlschlagen kann, sind, wenn die Anforderung nicht erfüllt werden kann, weil Funktionen angefordert werden, die nicht in der Version oder dem Profil dieses Kontexts enthalten sind. Zum Beispiel:
- Die Anforderung eines Funktionsobjekts des Kernprofils 3.3 wäre erfolgreich.
- Die Anforderung eines 3.3-Kompatibilitätsprofil-Funktionsobjekts würde fehlschlagen. Wir könnten die veralteten Funktionen nicht auflösen.
- Das Anfordern eines 4.3-Kernprofil-Funktionsobjekts würde fehlschlagen. Die neuen Kernfunktionen, die in den Versionen 4.0-4.3 eingeführt wurden, können nicht aufgelöst werden.
- Die Anforderung eines 3.1-Funktionsobjekts wäre erfolgreich. Es gibt nichts in 3.1, was nicht auch in 3.3 core enthalten ist.
Beachten Sie, dass bei der Erstellung eines Funktionsobjekts über diese Methode die QOpenGLContext das Eigentum an dem Objekt behält. Dies soll ermöglichen, dass das Objekt zwischengespeichert und gemeinsam genutzt werden kann.
© 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.