QRhiGles2InitParams Struct
OpenGL-spezifische Initialisierungsparameter. Mehr...
| Header: | #include <rhi/qrhi.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS GuiPrivate) target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate) |
| qmake: | QT += gui-private |
| Seit: | Qt 6.6 |
| Erbt von: | QRhiInitParams |
Öffentliche Funktionen
Öffentliche Variablen
| QSurface * | fallbackSurface |
| QSurfaceFormat | format |
| QOpenGLContext * | shareContext |
| QWindow * | window |
Statische öffentliche Mitglieder
| QOffscreenSurface * | newFallbackSurface(const QSurfaceFormat &format = QSurfaceFormat::defaultFormat()) |
Ausführliche Beschreibung
Hinweis: Hierbei handelt es sich um eine RHI-API mit eingeschränkten Kompatibilitätsgarantien; weitere Informationen finden Sie unter QRhi.
Ein OpenGL-basiertes „ QRhi “ benötigt ein bereits erstelltes „ QSurface “, das in Kombination mit „ QOpenGLContext “ verwendet werden kann. In der Praxis handelt es sich dabei meist um ein „ QOffscreenSurface “. Zusätzlich wird empfohlen – auch wenn dies optional ist –, die „ QWindow “ anzugeben, auf die das erste „ QRhiSwapChain “ abzielen soll.
QOffscreenSurface *fallbackSurface = QRhiGles2InitParams::newFallbackSurface();
QRhiGles2InitParams params;
params.fallbackSurface = fallbackSurface;
params.window = window;
rhi = QRhi::create(QRhi::OpenGLES2, ¶ms);Standardmäßig erstellt ` QRhi ` selbstständig einen ` QOpenGLContext `. Dieser Ansatz funktioniert in den meisten Fällen gut, einschließlich Thread-Szenarien, in denen es für jeden Rendering-Thread einen eigenen ` QRhi ` gibt. Da es für jeden ` QRhi` einen ` QOpenGLContext ` gibt, sind die Anforderungen an den OpenGL-Kontext (ein Kontext kann nur in einem Thread aktuell sein) erfüllt. Der implizit erstellte Kontext wird automatisch zusammen mit dem ` QRhi` zerstört.
Der QSurfaceFormat für den Kontext wird in ` format` angegeben. Der Konstruktor setzt diesen Wert auf ` QSurfaceFormat::defaultFormat()`, sodass Anwendungen, die ` QSurfaceFormat::setDefaultFormat()` mit den entsprechenden Einstellungen aufrufen, bevor der Konstruktor ausgeführt wird, den Wert von ` format` nicht ändern müssen.
Hinweis: Denken Sie daran , die Größen des Tiefen- und Stencil-Puffers auf 24 bzw. 8 festzulegen, wenn der Renderer auf Tiefen- oder Stencil-Prüfungen zurückgreift – entweder in der globalen Standardeinstellung QSurfaceFormat oder alternativ separat in allen beteiligten QSurfaceFormat -Instanzen: in format, im an newFallbackSurface() übergebenen Format-Argument sowie bei jedem QWindow, das mit dem QRhi verwendet wird.
In ` fallbackSurface` muss ein ` QSurface ` angegeben werden. Um Fehler in Thread-Umgebungen zu vermeiden, wird dieser vom ` QRhi ` niemals automatisch erstellt, da Instanzen von Unterklassen von ` QSurface ` – genau wie bei ` QWindow` – oft nur im GUI-/Haupt-Thread erstellt werden dürfen.
Der Einfachheit halber können Anwendungen newFallbackSurface() verwenden, das ein QOffscreenSurface erstellt und zurückgibt, das mit dem QOpenGLContext kompatibel ist, das anschließend von QRhi erstellt wird. Beachten Sie, dass die Eigentumsrechte an dem zurückgegebenen QOffscreenSurface auf den Aufrufer übertragen werden und QRhi dieses nicht zerstört.
Hinweis: Beim OpenGL-Backend kann „ QRhiSwapChain “ nur auf „ QWindow “-Instanzen abzielen, deren Oberflächentyp auf „ QSurface::OpenGLSurface “ gesetzt ist.
Hinweis: „ window “ ist optional. Es wird empfohlen, diesen Wert nach Möglichkeit anzugeben, um Probleme auf Systemen mit mehreren Adaptern und mehreren Bildschirmen zu vermeiden. Wenn „ window “ nicht festgelegt ist, erfolgt der allererste Aufruf von „ QOpenGLContext::makeCurrent()“ mit „ fallbackSurface “, was auf einigen Plattformen (z. B. Windows) ein unsichtbares Fenster sein kann und in manchen Fällen zu unerwarteten Problemen führen kann.
Falls eine gemeinsame Nutzung von Ressourcen mit einem bestehenden „ QOpenGLContext “ gewünscht wird, kann „ shareContext “ auf ein bestehendes „ QOpenGLContext “ gesetzt werden. Alternativ wird „ Qt::AA_ShareOpenGLContexts “ ebenfalls berücksichtigt, sofern diese Option aktiviert ist.
Arbeiten mit bestehenden OpenGL-Kontexten
Bei der Zusammenarbeit mit einer anderen Grafik-Engine kann es erforderlich sein, eine „ QRhi “-Instanz zu erhalten, die denselben OpenGL-Kontext verwendet. Dies lässt sich erreichen, indem ein Zeiger auf einen „ QRhiGles2NativeHandles “ an „ QRhi::create()“ übergeben wird. Der „ QRhiGles2NativeHandles::context “ muss dann auf einen Wert ungleich Null gesetzt werden.
Ein alternativer Ansatz besteht darin, ein ` QOpenGLContext ` zu erstellen, das mit dem Kontext der anderen Engine ` shares resources ` verbindet, und diesen Kontext über ` QRhiGles2NativeHandles` zu übergeben.
Die ` QRhi ` übernimmt nicht die Eigentumsrechte an dem über ` QRhiGles2NativeHandles` übergebenen ` QOpenGLContext `.
Dokumentation der Member-Funktionen
QRhiGles2InitParams::QRhiGles2InitParams()
Erstellt ein neues QRhiGles2InitParams-Objekt.
format Wird auf ` QSurfaceFormat::defaultFormat()` gesetzt.
[static] QOffscreenSurface *QRhiGles2InitParams::newFallbackSurface(const QSurfaceFormat &format = QSurfaceFormat::defaultFormat())
Gibt ein neues ` QOffscreenSurface ` zurück, das mit einem ` QRhi ` verwendet werden kann, indem es über ` QRhiGles2InitParams` übergeben wird.
Wenn „ format “ nicht angegeben wird, ist sein Standardwert das globale Standardformat, das über „ QSurfaceFormat::setDefaultFormat()“ festgelegt werden kann.
format wird entsprechend angepasst, um spätere Probleme aufgrund eines inkompatiblen Kontexts und einer inkompatiblen Oberfläche zu vermeiden.
Hinweis: Diese Funktion darf nur im GUI-/Haupt-Thread aufgerufen werden oder wenn die Plattformintegration Offscreen-Oberflächen unterstützt.
Hinweis: Es liegt in der Verantwortung der Anwendung, die zurückgegebene ` QOffscreenSurface ` im GUI-/Haupt-Thread zu löschen, sobald die zugehörige ` QRhi ` gelöscht wurde. Die ` QRhi ` löscht die ` QOffscreenSurface` nicht.
Dokumentation der Member-Variablen
QSurface *QRhiGles2InitParams::fallbackSurface
Ein „ QSurface “, der mit „ format “ kompatibel ist. In der Regel ein „ QOffscreenSurface “. Die Bereitstellung dieses Objekts ist obligatorisch. Beachten Sie die Auswirkungen auf das Threading: Ein „ QOffscreenSurface “, wie beispielsweise „ QWindow “, darf ausschließlich im Haupt- (GUI-)Thread erstellt und zerstört werden, selbst wenn der „ QRhi “ in einem anderen Thread erstellt wurde und dort ausgeführt wird.
QSurfaceFormat QRhiGles2InitParams::format
Die ` QSurfaceFormat`, die standardmäßig mit ` QSurfaceFormat::defaultFormat()` initialisiert wird.
QOpenGLContext *QRhiGles2InitParams::shareContext
Optional: das „ QOpenGLContext “, mit dem Ressourcen geteilt werden sollen. „ QRhi “ erstellt einen eigenen Kontext, und wenn dieses Element auf ein gültiges „ QOpenGLContext “ gesetzt wird, führt dies dazu, dass „ setShareContext()“ damit aufgerufen wird.
QWindow *QRhiGles2InitParams::window
Optional, wird jedoch empfohlen, wenn die Zieladresse „ QWindow “ mit dem Parameter „ QRhi “ verwendet wird.
© 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.