Auf dieser Seite

QOpenGLVersionFunctionsFactory Class

Bietet Zugriff auf OpenGL-Funktionen für eine bestimmte Version und ein bestimmtes Profil. Mehr...

Header: #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)

Ausführliche Beschreibung

Dokumentation zu den Mitgliedsfunktionen

[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 “ des „ context “ bietet. Es ist nicht erforderlich, „QAbstractOpenGLFunctions::initializeOpenGLFunctions()“ aufzurufen, solange die „ context “ aktuell ist. Es ist auch möglich, diese Funktion aufzurufen, wenn der ` context ` nicht aktuell ist; in diesem Fall liegt es jedoch in der Verantwortung des Aufrufers, durch den anschließenden Aufruf von `QAbstractOpenGLFunctions::initializeOpenGLFunctions()` für eine ordnungsgemäße Initialisierung zu sorgen.

In der Regel würde man die Template-Version dieser Funktion verwenden, damit das Ergebnis automatisch in den richtigen Typ umgewandelt wird.

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

Gibt einen Zeiger auf ein Objekt zurück, das Zugriff auf alle Funktionen für die Version und das Profil dieses Kontexts bietet. Es ist nicht erforderlich, `QAbstractOpenGLFunctions::initializeOpenGLFunctions()` aufzurufen, solange die ` context ` aktuell ist. Es ist auch möglich, diese Funktion aufzurufen, wenn das ` context ` nicht aktuell ist; in diesem Fall liegt es jedoch in der Verantwortung des Aufrufers, durch den anschließenden Aufruf von `QAbstractOpenGLFunctions::initializeOpenGLFunctions()` eine ordnungsgemäße Initialisierung sicherzustellen.

In der Regel würde man die Template-Version dieser Funktion verwenden, damit das Ergebnis automatisch auf den richtigen Typ umgewandelt wird.

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. Verwenden Sie dazu entweder die Template-Version dieser Funktion und geben Sie den gewünschten Funktionsobjekttyp als Template-Parameter an, oder übergeben Sie ein ` QOpenGLVersionProfile `-Objekt als Argument an die Nicht-Template-Funktion.

Beachten Sie, dass Anfragen nach Funktionsobjekten anderer Versionen oder Profile fehlschlagen können und in diesem Fall ` nullptr` zurückgeben. Die Erstellung des Funktionsobjekts kann beispielsweise fehlschlagen, wenn die Anfrage 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 3.3-Core-Profils würde erfolgreich sein.
  • Die Anforderung eines Funktionsobjekts des Kompatibilitätsprofils 3.3 würde fehlschlagen. Die veralteten Funktionen könnten nicht aufgelöst werden.
  • Die Anforderung eines Funktionsobjekts für das 4.3-Core-Profil würde fehlschlagen. Die in den Versionen 4.0–4.3 neu eingeführten Kernfunktionen könnten nicht aufgelöst werden.
  • Die Anforderung eines Funktionsobjekts für das 3.1-Core-Profil würde erfolgreich sein. Es gibt in 3.1 nichts, was nicht auch im 3.3-Core enthalten ist.

Beachten Sie, dass bei der Erstellung eines Funktionsobjekts über diese Methode die „ QOpenGLContext “ das Eigentumsrecht an dem Objekt behält. Dies dient dazu, das Objekt zwischenspeichern und gemeinsam nutzen zu können.

Diese Funktion überlädt die Methode ` 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.