QOpenGLContext Class
Die Klasse QOpenGLContext stellt einen nativen OpenGL-Kontext dar, der OpenGL-Rendering auf einer QSurface ermöglicht .
Kopfzeile: | #include <QOpenGLContext> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
Vererbt: | QObject |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QOpenGLContext ist Teil von Rendering in 3D.
Öffentliche Typen
enum | OpenGLModuleType { LibGL, LibGLES } |
Öffentliche Funktionen
QOpenGLContext(QObject *parent = nullptr) | |
virtual | ~QOpenGLContext() |
bool | create() |
GLuint | defaultFramebufferObject() const |
void | doneCurrent() |
QSet<QByteArray> | extensions() const |
QOpenGLExtraFunctions * | extraFunctions() const |
QSurfaceFormat | format() const |
QOpenGLFunctions * | functions() const |
QFunctionPointer | getProcAddress(const QByteArray &procName) const |
QFunctionPointer | getProcAddress(const char *procName) const |
bool | hasExtension(const QByteArray &extension) const |
bool | isOpenGLES() const |
bool | isValid() const |
bool | makeCurrent(QSurface *surface) |
QNativeInterface * | nativeInterface() const |
QScreen * | screen() const |
void | setFormat(const QSurfaceFormat &format) |
void | setScreen(QScreen *screen) |
void | setShareContext(QOpenGLContext *shareContext) |
QOpenGLContext * | shareContext() const |
QOpenGLContextGroup * | shareGroup() const |
QSurface * | surface() const |
void | swapBuffers(QSurface *surface) |
Signale
void | aboutToBeDestroyed() |
Statische öffentliche Mitglieder
bool | areSharing(QOpenGLContext *first, QOpenGLContext *second) |
QOpenGLContext * | currentContext() |
QOpenGLContext * | globalShareContext() |
QOpenGLContext::OpenGLModuleType | openGLModuleType() |
bool | supportsThreadedOpenGL() |
Detaillierte Beschreibung
QOpenGLContext stellt den OpenGL-Zustand eines zugrunde liegenden OpenGL-Kontextes dar. Um einen Kontext einzurichten, stellen Sie seinen Bildschirm und sein Format so ein, dass sie mit denen der Oberfläche(n) übereinstimmen, mit denen der Kontext verwendet werden soll, lassen Sie ihn gegebenenfalls mit setShareContext() Ressourcen mit anderen Kontexten teilen, und rufen Sie schließlich create() auf. Verwenden Sie den Rückgabewert oder isValid(), um zu prüfen, ob der Kontext erfolgreich initialisiert wurde.
Ein Kontext kann durch den Aufruf von makeCurrent() für eine bestimmte Oberfläche aktuell gemacht werden. Wenn das OpenGL-Rendering abgeschlossen ist, rufen Sie swapBuffers() auf, um die vorderen und hinteren Puffer der Oberfläche zu tauschen, so dass der neu gerenderte Inhalt sichtbar wird. Um bestimmte Plattformen zu unterstützen, verlangt QOpenGLContext, dass Sie makeCurrent() erneut aufrufen, bevor Sie mit dem Rendern eines neuen Frames beginnen, nachdem Sie swapBuffers() aufgerufen haben.
Wenn der Kontext vorübergehend nicht benötigt wird, z.B. wenn die Anwendung nicht rendert, kann es sinnvoll sein, ihn zu löschen, um Ressourcen freizugeben. Sie können sich mit dem Signal aboutToBeDestroyed() verbinden, um alle Ressourcen zu bereinigen, die mit anderen Eigentümern als dem QOpenGLContext selbst zugewiesen wurden.
Sobald ein QOpenGLContext aktuell gemacht wurde, können Sie ihn plattformunabhängig rendern, indem Sie die OpenGL-Enabler von Qt wie QOpenGLFunctions, QOpenGLBuffer, QOpenGLShaderProgram und QOpenGLFramebufferObject verwenden. Es ist auch möglich, die OpenGL-API der Plattform direkt zu verwenden, ohne die Qt-Enabler zu benutzen, obwohl dies möglicherweise auf Kosten der Portabilität geht. Letzteres ist notwendig, wenn Sie OpenGL 1.x oder OpenGL ES 1.x verwenden möchten.
Weitere Informationen über die OpenGL-API finden Sie in der offiziellen OpenGL-Dokumentation.
Ein Beispiel für die Verwendung von QOpenGLContext finden Sie im OpenGL Window Beispiel.
Thread-Affinität
QOpenGLContext kann mit moveToThread() in einen anderen Thread verschoben werden. Rufen Sie makeCurrent() nicht von einem anderen Thread auf als dem, zu dem das QOpenGLContext-Objekt gehört. Ein Kontext kann immer nur in einem Thread und auf einer Oberfläche aktuell sein, und ein Thread hat immer nur einen aktuellen Kontext.
Gemeinsame Nutzung von Kontextressourcen
Ressourcen wie Texturen und Vertex-Buffer-Objekte können von verschiedenen Kontexten gemeinsam genutzt werden. Verwenden Sie setShareContext() vor dem Aufruf von create(), um anzugeben, dass die Kontexte diese Ressourcen gemeinsam nutzen sollen. QOpenGLContext verwaltet intern ein QOpenGLContextGroup Objekt, auf das mit shareGroup() zugegriffen werden kann, und das verwendet werden kann, um alle Kontexte in einer bestimmten Freigabegruppe zu finden. Eine Freigabegruppe besteht aus allen Kontexten, die erfolgreich initialisiert wurden und sich mit einem bestehenden Kontext in der Freigabegruppe teilen. Ein nicht gemeinsam genutzter Kontext hat eine Freigabegruppe, die aus einem einzigen Kontext besteht.
Standard-Rahmenpuffer
Auf bestimmten Plattformen kann ein anderer Framebuffer als 0 der Standard-Framebuffer sein, abhängig von der aktuellen Oberfläche. Anstatt glBindFramebuffer(0) aufzurufen, wird empfohlen, glBindFramebuffer(ctx->defaultFramebufferObject()) zu verwenden, um sicherzustellen, dass Ihre Anwendung zwischen verschiedenen Plattformen portabel ist. Wenn Sie jedoch QOpenGLFunctions::glBindFramebuffer() verwenden, wird dies automatisch für Sie erledigt.
Warnung: WebAssembly
Es wird empfohlen, nur einen QOpenGLContext mit einem QSurface zu verwenden, und zwar für die gesamte Lebensdauer des QSurface. Sollte mehr als ein Kontext verwendet werden, ist es wichtig zu verstehen, dass mehrere QOpenGLContext-Instanzen durch denselben nativen Kontext unter der WebAssembly-Plattform unterstützt werden können. Daher kann der Aufruf von makeCurrent() mit demselben QSurface auf zwei QOpenGLContext-Objekten nicht zu einem anderen nativen Kontext im zweiten Aufruf wechseln. Infolgedessen können alle OpenGL-Zustandsänderungen, die nach dem zweiten makeCurrent() durchgeführt werden, auch den Zustand des ersten QOpenGLContext ändern, da sie alle durch denselben nativen Kontext unterstützt werden.
Hinweis: Dies bedeutet, dass bei der Verwendung von WebAssembly mit bestehendem OpenGL-basiertem Qt-Code einige Portierungen erforderlich sein können, um diese Einschränkungen zu berücksichtigen.
Siehe auch QOpenGLFunctions, QOpenGLBuffer, QOpenGLShaderProgram, und QOpenGLFramebufferObject.
Dokumentation der Mitgliedstypen
enum QOpenGLContext::OpenGLModuleType
Diese Aufzählung definiert den Typ der zugrunde liegenden OpenGL-Implementierung.
Konstante | Wert | Beschreibung |
---|---|---|
QOpenGLContext::LibGL | 0 | OpenGL |
QOpenGLContext::LibGLES | 1 | OpenGL ES 2.0 oder höher |
Dokumentation der Mitgliedsfunktionen
[explicit]
QOpenGLContext::QOpenGLContext(QObject *parent = nullptr)
Erzeugt eine neue OpenGL-Kontextinstanz mit dem übergeordneten Objekt parent.
Bevor es verwendet werden kann, müssen Sie das richtige Format einstellen und create() aufrufen.
Siehe auch create() und makeCurrent().
[virtual noexcept]
QOpenGLContext::~QOpenGLContext()
Zerstört das Objekt QOpenGLContext.
Wenn dies der aktuelle Kontext des Threads ist, wird auch doneCurrent() aufgerufen.
[signal]
void QOpenGLContext::aboutToBeDestroyed()
Dieses Signal wird ausgegeben, bevor der zugrundeliegende native OpenGL-Kontext zerstört wird, so dass Benutzer OpenGL-Ressourcen aufräumen können, die andernfalls im Fall von gemeinsam genutzten OpenGL-Kontexten hängen bleiben könnten.
Wenn Sie den Kontext aktuell machen wollen, um Aufräumarbeiten durchzuführen, stellen Sie sicher, dass Sie sich nur über eine direkte Verbindung mit dem Signal verbinden.
Hinweis: In Qt for Python wird dieses Signal nicht empfangen, wenn es vom Destruktor von QOpenGLWidget oder QOpenGLWindow ausgegeben wird, da die Python-Instanz bereits zerstört wurde. Wir empfehlen, stattdessen Bereinigungen in QWidget::hideEvent() durchzuführen.
[static]
bool QOpenGLContext::areSharing(QOpenGLContext *first, QOpenGLContext *second)
Gibt true
zurück, wenn die Kontexte first und second OpenGL-Ressourcen gemeinsam nutzen.
bool QOpenGLContext::create()
Versucht, den OpenGL-Kontext mit der aktuellen Konfiguration zu erstellen.
Die aktuelle Konfiguration umfasst das Format, den Freigabekontext und den Bildschirm.
Wenn die OpenGL-Implementierung auf Ihrem System die angeforderte Version des OpenGL-Kontextes nicht unterstützt, versucht QOpenGLContext, die am besten passende Version zu erstellen. Die tatsächlich erstellten Kontexteigenschaften können mit QSurfaceFormat abgefragt werden, das von der Funktion format() zurückgegeben wird. Wenn Sie zum Beispiel einen Kontext anfordern, der das OpenGL 4.3 Core-Profil unterstützt, der Treiber und/oder die Hardware aber nur Kontexte der Version 3.2 Core-Profil unterstützt, erhalten Sie einen Kontext mit dem Profil 3.2 Core.
Gibt true
zurück, wenn der native Kontext erfolgreich erstellt wurde und bereit ist, mit makeCurrent(), swapBuffers(), usw. verwendet zu werden.
Hinweis: Wenn der Kontext bereits existiert, zerstört diese Funktion zuerst den bestehenden Kontext und erstellt dann einen neuen.
Siehe auch makeCurrent() und format().
[static]
QOpenGLContext *QOpenGLContext::currentContext()
Gibt den letzten Kontext zurück, der makeCurrent im aktuellen Thread aufgerufen hat, oder nullptr
, wenn kein Kontext aktuell ist.
GLuint QOpenGLContext::defaultFramebufferObject() const
Rufen Sie dies auf, um das Standard-Framebuffer-Objekt für die aktuelle Oberfläche zu erhalten.
Auf einigen Plattformen (z.B. iOS) hängt das Standard-Framebuffer-Objekt von der Oberfläche ab, auf der gerendert wird, und kann sich von 0 unterscheiden. Anstatt glBindFramebuffer(0) aufzurufen, sollten Sie daher glBindFramebuffer(ctx->defaultFramebufferObject()) aufrufen, wenn Ihre Anwendung auf verschiedenen Qt-Plattformen funktionieren soll.
Wenn Sie glBindFramebuffer() in QOpenGLFunctions verwenden, müssen Sie sich darüber keine Gedanken machen, da es automatisch das defaultFramebufferObject() des aktuellen Kontexts bindet, wenn 0 übergeben wird.
Hinweis: Widgets, die über Framebuffer-Objekte rendern, wie QOpenGLWidget und QQuickWidget, überschreiben den von dieser Funktion zurückgegebenen Wert, wenn das Malen aktiv ist, da zu diesem Zeitpunkt der korrekte "Standard"-Framebuffer der dem Widget zugeordnete Backing-Framebuffer ist, nicht der plattformspezifische, der zur Oberfläche des Top-Level-Fensters gehört. Dies gewährleistet das erwartete Verhalten für diese Funktion und andere Klassen, die auf sie angewiesen sind (zum Beispiel QOpenGLFramebufferObject::bindDefault() oder QOpenGLFramebufferObject::release()).
Siehe auch QOpenGLFramebufferObject.
void QOpenGLContext::doneCurrent()
Convenience-Funktion zum Aufruf von makeCurrent mit einer 0-Oberfläche.
Dies führt dazu, dass im aktuellen Thread kein Kontext vorhanden ist.
Siehe auch makeCurrent() und currentContext().
QSet<QByteArray> QOpenGLContext::extensions() const
Gibt die Menge der OpenGL-Erweiterungen zurück, die von diesem Kontext unterstützt werden.
Der Kontext oder ein gemeinsamer Kontext muss aktuell sein.
Siehe auch hasExtension().
QOpenGLExtraFunctions *QOpenGLContext::extraFunctions() const
Ruft die Instanz QOpenGLExtraFunctions für diesen Kontext ab.
QOpenGLContext bietet dies als bequeme Möglichkeit, auf QOpenGLExtraFunctions zuzugreifen, ohne es manuell verwalten zu müssen.
Der Kontext oder ein gemeinsamer Kontext muss aktuell sein.
Die zurückgegebene QOpenGLExtraFunctions Instanz ist sofort einsatzbereit und muss nicht mit initializeOpenGLFunctions() aufgerufen werden.
Hinweis: QOpenGLExtraFunctions enthält Funktionen, deren Verfügbarkeit zur Laufzeit nicht garantiert ist. Die Verfügbarkeit zur Laufzeit hängt von der Plattform, dem Grafiktreiber und der von der Anwendung angeforderten OpenGL-Version ab.
Siehe auch QOpenGLFunctions und QOpenGLExtraFunctions.
QSurfaceFormat QOpenGLContext::format() const
Gibt das Format des zugrunde liegenden Plattformkontexts zurück, wenn create() aufgerufen wurde.
Andernfalls wird das angeforderte Format zurückgegeben.
Das angeforderte und das tatsächliche Format können voneinander abweichen. Die Anforderung einer bestimmten OpenGL-Version bedeutet nicht, dass der resultierende Kontext genau auf die angeforderte Version ausgerichtet ist. Es wird nur garantiert, dass die Kombination aus Version/Profil/Optionen für den erstellten Kontext mit der Anforderung kompatibel ist, solange der Treiber in der Lage ist, einen solchen Kontext bereitzustellen.
Zum Beispiel kann die Anforderung eines OpenGL Version 3.x Kernprofilkontextes zu einem OpenGL 4.x Kernprofilkontext führen. In ähnlicher Weise kann eine Anforderung für OpenGL 2.1 zu einem OpenGL 3.0-Kontext mit aktivierten veralteten Funktionen führen. Schließlich können je nach Treiber nicht unterstützte Versionen entweder zu einem Fehler bei der Kontexterstellung oder zu einem Kontext für die höchste unterstützte Version führen.
Ähnliche Unterschiede sind bei den Puffergrößen möglich, z.B. kann der resultierende Kontext einen größeren Tiefenpuffer haben als angefordert. Dies ist völlig normal.
Siehe auch setFormat().
QOpenGLFunctions *QOpenGLContext::functions() const
Ruft die Instanz QOpenGLFunctions für diesen Kontext ab.
QOpenGLContext bietet dies als bequeme Möglichkeit, auf QOpenGLFunctions zuzugreifen, ohne es manuell verwalten zu müssen.
Der Kontext oder ein gemeinsamer Kontext muss aktuell sein.
Die zurückgegebene QOpenGLFunctions Instanz ist sofort einsatzbereit und muss nicht mit initializeOpenGLFunctions() aufgerufen werden.
QFunctionPointer QOpenGLContext::getProcAddress(const QByteArray &procName) const
Löst den Funktionszeiger auf eine OpenGL-Erweiterungsfunktion auf, die durch procName
Gibt nullptr
zurück, wenn keine solche Funktion gefunden werden kann.
QFunctionPointer QOpenGLContext::getProcAddress(const char *procName) const
Dies ist eine überladene Funktion.
[static]
QOpenGLContext *QOpenGLContext::globalShareContext()
Gibt den anwendungsweiten gemeinsamen OpenGL-Kontext zurück, falls vorhanden. Andernfalls wird nullptr
zurückgegeben.
Dies ist nützlich, wenn Sie OpenGL-Objekte (Puffer, Texturen, etc.) hochladen müssen, bevor Sie ein QOpenGLWidget oder QQuickWidget erstellen oder anzeigen.
Hinweis: Sie müssen das Qt::AA_ShareOpenGLContexts Flag auf QGuiApplication setzen, bevor Sie das QGuiApplication Objekt erstellen, da Qt sonst möglicherweise keinen globalen gemeinsamen Kontext erstellt.
Warnung: Versuchen Sie nicht, den von dieser Funktion zurückgegebenen Kontext auf einer beliebigen Oberfläche aktuell zu machen. Stattdessen können Sie einen neuen Kontext erstellen, der mit dem globalen geteilt wird, und dann den neuen Kontext aktuell machen.
Siehe auch Qt::AA_ShareOpenGLContexts, setShareContext(), und makeCurrent().
bool QOpenGLContext::hasExtension(const QByteArray &extension) const
Gibt true
zurück, wenn dieser OpenGL-Kontext den angegebenen OpenGL extension unterstützt, andernfalls false
.
Der Kontext oder ein gemeinsamer Kontext muss aktuell sein.
Siehe auch extensions().
bool QOpenGLContext::isOpenGLES() const
Gibt true zurück, wenn der Kontext ein OpenGL ES-Kontext ist.
Wenn der Kontext noch nicht erstellt wurde, basiert das Ergebnis auf dem angeforderten Format, das mit setFormat() festgelegt wurde.
Siehe auch create(), format(), und setFormat().
bool QOpenGLContext::isValid() const
Gibt zurück, ob dieser Kontext gültig ist, d.h. ob er erfolgreich erstellt wurde.
Auf einigen Plattformen zeigt der Rückgabewert von false
für einen zuvor erfolgreich erstellten Kontext an, dass der OpenGL-Kontext verloren gegangen ist.
Die typische Art, mit Kontextverlustszenarien in Anwendungen umzugehen, besteht darin, über diese Funktion zu prüfen, wann immer makeCurrent() fehlschlägt und false
zurückgibt. Wenn diese Funktion dann false
zurückgibt, erstellen Sie den zugrunde liegenden nativen OpenGL-Kontext neu, indem Sie create() aufrufen, rufen Sie makeCurrent() erneut auf und initialisieren Sie dann alle OpenGL-Ressourcen neu.
Auf einigen Plattformen lässt sich ein Kontextverlust nicht vermeiden. Auf anderen Plattformen muss man sich jedoch für diese Situationen entscheiden. Dies kann durch die Aktivierung von ResetNotification in QSurfaceFormat erfolgen. Dies führt dazu, dass RESET_NOTIFICATION_STRATEGY_EXT
im zugrunde liegenden nativen OpenGL-Kontext auf LOSE_CONTEXT_ON_RESET_EXT
gesetzt wird. QOpenGLContext wird dann den Status über glGetGraphicsResetStatusEXT()
in jedem makeCurrent() überwachen.
Siehe auch create().
bool QOpenGLContext::makeCurrent(QSurface *surface)
Macht den Kontext im aktuellen Thread aktuell, gegen den angegebenen surface. Gibt bei Erfolg true
zurück, andernfalls false
. Letzteres kann passieren, wenn die Oberfläche nicht freigelegt ist oder die Grafikhardware nicht verfügbar ist, weil z.B. die Anwendung angehalten wurde.
Wenn surface gleich nullptr
ist, entspricht dies dem Aufruf von doneCurrent().
Vermeiden Sie es, diese Funktion von einem anderen Thread aus aufzurufen als dem, in dem sich die Instanz QOpenGLContext befindet. Wenn du QOpenGLContext von einem anderen Thread aus benutzen willst, solltest du zuerst sicherstellen, dass sie nicht im aktuellen Thread läuft, indem du doneCurrent() aufrufst, falls nötig. Rufen Sie dann moveToThread(otherThread) auf, bevor Sie es im anderen Thread verwenden.
Standardmäßig setzt Qt eine Prüfung ein, die die obige Bedingung der Thread-Affinität erzwingt. Es ist immer noch möglich, diese Prüfung zu deaktivieren, indem man das Attribut Qt::AA_DontCheckOpenGLContextThreadAffinity
application setzt. Vergewissern Sie sich, dass Sie die Konsequenzen der Verwendung von QObjects von außerhalb des Threads, in dem sie sich befinden, verstanden haben, wie in der QObject thread affinity Dokumentation erklärt.
Siehe auch functions(), doneCurrent(), und Qt::AA_DontCheckOpenGLContextThreadAffinity.
template <typename QNativeInterface> QNativeInterface *QOpenGLContext::nativeInterface() const
Gibt eine native Schnittstelle des angegebenen Typs für den Kontext zurück.
Diese Funktion bietet Zugriff auf die plattformspezifische Funktionalität von QOpenGLContext, wie im QNativeInterface Namespace definiert:
Native Schnittstelle zu einem NSOpenGLContext auf macOS | |
Native Schnittstelle zu einem EGL-Kontext | |
Native Schnittstelle zu einem GLX-Kontext | |
Native Schnittstelle zu einem WGL-Kontext unter Windows |
Wenn die angeforderte Schnittstelle nicht verfügbar ist, wird nullptr
zurückgegeben.
[static]
QOpenGLContext::OpenGLModuleType QOpenGLContext::openGLModuleType()
Gibt den zugrunde liegenden OpenGL-Implementierungstyp zurück.
Auf Plattformen, auf denen die OpenGL-Implementierung nicht dynamisch geladen wird, wird der Rückgabewert während der Kompilierungszeit bestimmt und ändert sich nie.
Hinweis: Eine Desktop-OpenGL-Implementierung kann auch in der Lage sein, ES-kompatible Kontexte zu erstellen. Daher ist es in den meisten Fällen sinnvoller, QSurfaceFormat::renderableType() zu überprüfen oder die Komfortfunktion isOpenGLES() zu verwenden.
Hinweis: Diese Funktion setzt voraus, dass die Instanz QGuiApplication bereits erstellt wurde.
QScreen *QOpenGLContext::screen() const
Gibt den Bildschirm zurück, für den der Kontext erstellt wurde.
Siehe auch setScreen().
void QOpenGLContext::setFormat(const QSurfaceFormat &format)
Legt die format fest, mit der der OpenGL-Kontext kompatibel sein soll. Sie müssen create() aufrufen, bevor sie wirksam wird.
Wenn das Format nicht explizit über diese Funktion gesetzt wird, wird das von QSurfaceFormat::defaultFormat() zurückgegebene Format verwendet. Das bedeutet, dass bei mehreren Kontexten die einzelnen Aufrufe dieser Funktion durch einen einzigen Aufruf von QSurfaceFormat::setDefaultFormat() ersetzt werden können, bevor der erste Kontext erstellt wird.
Siehe auch format().
void QOpenGLContext::setScreen(QScreen *screen)
Legt die screen fest, für die der OpenGL-Kontext gültig sein soll. Sie müssen create() aufrufen, bevor es wirksam wird.
Siehe auch screen().
void QOpenGLContext::setShareContext(QOpenGLContext *shareContext)
Lässt diesen Kontext Texturen, Shader und andere OpenGL-Ressourcen mit shareContext gemeinsam nutzen. Sie müssen create() aufrufen, bevor die Funktion wirksam wird.
Siehe auch shareContext().
QOpenGLContext *QOpenGLContext::shareContext() const
Gibt den Freigabekontext zurück, mit dem dieser Kontext erstellt wurde.
Wenn die zugrundeliegende Plattform nicht in der Lage war, die angeforderte Freigabe zu unterstützen, wird hier 0 zurückgegeben.
Siehe auch setShareContext().
QOpenGLContextGroup *QOpenGLContext::shareGroup() const
Gibt die Freigabegruppe zurück, zu der dieser Kontext gehört.
[static]
bool QOpenGLContext::supportsThreadedOpenGL()
Gibt true
zurück, wenn die Plattform OpenGL-Rendering außerhalb des Haupt-(Gui-)Threads unterstützt.
Der Wert wird durch das verwendete Plattform-Plugin gesteuert und kann auch von den Grafiktreibern abhängen.
QSurface *QOpenGLContext::surface() const
Gibt die Oberfläche zurück, mit der der Kontext aktuell gemacht wurde.
Dies ist die Oberfläche, die als Argument an makeCurrent() übergeben wird.
void QOpenGLContext::swapBuffers(QSurface *surface)
Vertauscht die hinteren und vorderen Puffer von surface.
Rufen Sie diese Funktion auf, um ein OpenGL-Rendering zu beenden, und stellen Sie sicher, dass Sie makeCurrent() erneut aufrufen, bevor Sie weitere OpenGL-Befehle erteilen, zum Beispiel als Teil eines neuen Frames.
© 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.