QRhiResource Class
Basisklasse für Klassen, die native Ressourcenobjekte kapseln. 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 |
| Vererbt an: |
Öffentliche Typen
| enum | Type { Buffer, Texture, Sampler, RenderBuffer, RenderPassDescriptor, …, ShadingRateMap } |
Öffentliche Funktionen
| virtual | ~QRhiResource() |
| void | deleteLater() |
| virtual void | destroy() = 0 |
| quint64 | globalResourceId() const |
| QByteArray | name() const |
| virtual QRhiResource::Type | resourceType() const = 0 |
| QRhi * | rhi() const |
| void | setName(const QByteArray &name) |
Geschützte Funktionen
| QRhiResource(const QRhiResource &) | |
| QRhiResource & | operator=(const QRhiResource &) |
Ausführliche Beschreibung
Hinweis: Hierbei handelt es sich um eine RHI-API mit eingeschränkten Kompatibilitätsgarantien; weitere Informationen finden Sie unter QRhi.
Dokumentation zu den Mitgliedstypen
enum QRhiResource::Type
Gibt den Typ der Ressource an.
| Konstante | Wert |
|---|---|
QRhiResource::Buffer | 0 |
QRhiResource::Texture | 1 |
QRhiResource::Sampler | 2 |
QRhiResource::RenderBuffer | 3 |
QRhiResource::RenderPassDescriptor | 4 |
QRhiResource::SwapChainRenderTarget | 5 |
QRhiResource::TextureRenderTarget | 6 |
QRhiResource::ShaderResourceBindings | 7 |
QRhiResource::GraphicsPipeline | 8 |
QRhiResource::SwapChain | 9 |
QRhiResource::ComputePipeline | 10 |
QRhiResource::CommandBuffer | 11 |
QRhiResource::ShadingRateMap | 12 |
Dokumentation der Member-Funktionen
[protected delete] QRhiResource::QRhiResource(const QRhiResource &)
Erstellt eine Instanz von „ QRhiResource “ durch Kopieren. Diese Funktion wird gelöscht.
[virtual noexcept] QRhiResource::~QRhiResource()
Destruktor.
Gibt die zugrunde liegenden nativen Grafikressourcen frei (oder fordert deren verzögerte Freigabe an), sofern vorhanden.
Hinweis: Ressourcen , auf die Befehle für das aktuelle Bild verweisen, sollten erst freigegeben werden, nachdem das Bild mit „ QRhi::endFrame()“ übermittelt wurde.
Siehe auch ` destroy()`.
void QRhiResource::deleteLater()
Wird diese Funktion aufgerufen, ohne dass ein Frame aufgezeichnet wird, entspricht dies dem Löschen des Objekts. Zwischen einem Aufruf von ` QRhi::beginFrame()` und ` QRhi::endFrame()` verhält sich die Funktion jedoch anders: Das ` QRhiResource ` wird erst zerstört, wenn der Frame über ` QRhi::endFrame()` übermittelt wird. Damit wird die Anforderung von ` QRhi ` erfüllt, dass ` QRhiResource `-Objekte, auf die der aufgezeichnete Frame verweist, nicht verändert werden dürfen.
Wenn der „ QRhi “, der dieses Objekt erstellt hat, bereits zerstört wurde, wird das Objekt sofort gelöscht.
Die Verwendung von `deleteLater()` kann in vielen Fällen eine nützliche Erleichterung sein und es ergänzt die Low-Level-Garantie (dass die zugrunde liegenden nativen Grafikobjekte niemals zerstört werden, bis dies sicher möglich ist und mit Sicherheit feststeht, dass sie nicht von der GPU in einem noch laufenden Frame verwendet werden), indem es eine Möglichkeit bietet, sicherzustellen, dass die C++-Objektinstanzen (von „ QRhiBuffer “, „ QRhiTexture “, usw.) selbst bis zum Ende des aktuellen Frames gültig bleiben.
Das folgende Beispiel zeigt eine bequeme Möglichkeit, einen Einweg-Puffer zu erstellen, der nur in einem Frame verwendet und in `endFrame()` automatisch freigegeben wird. (Was die zugrunde liegenden nativen Puffer betrifft, gilt die übliche Garantie: Das QRhi -Backend verschiebt die Freigabe dieser Puffer so lange, bis sichergestellt ist, dass der Frame, in dem die GPU auf den Puffer zugreift, abgeschlossen ist.)
rhi->beginFrame(swapchain);
QRhiBuffer *buf = rhi->newBuffer(QRhiBuffer::Immutable, QRhiBuffer::VertexBuffer, 256);
buf->deleteLater(); // !
u = rhi->nextResourceUpdateBatch();
u->uploadStaticBuffer(buf, data);
// ... draw with buf
rhi->endFrame();Siehe auch destroy().
[pure virtual] void QRhiResource::destroy()
Gibt die zugrunde liegenden nativen Grafikressourcen frei (oder fordert deren verzögerte Freigabe an). Der Aufruf kann mehrfach sicher erfolgen; nachfolgende Aufrufe haben dann keine Auswirkung.
Sobald `destroy()` aufgerufen wurde, kann die ` QRhiResource `-Instanz wiederverwendet werden, indem ` create() ` erneut aufgerufen wird. Dies führt dann dazu, dass darunter neue native Grafikressourcen erstellt werden.
Hinweis: Ressourcen , auf die Befehle für den aktuellen Frame verweisen, sollten erst freigegeben werden, wenn der Frame von ` QRhi::endFrame()` übermittelt wurde.
Der Destruktor von ` QRhiResource ` führt dieselbe Aufgabe aus, sodass der Aufruf dieser Funktion vor dem Löschen eines ` QRhiResource` nicht erforderlich ist.
Siehe auch ` deleteLater()`.
quint64 QRhiResource::globalResourceId() const
Gibt die globale, eindeutige Kennung dieses „ QRhiResource “ zurück.
Der Anwendercode muss sich nur selten direkt mit diesem Wert befassen. Er wird intern zu Nachverfolgungs- und Buchhaltungszwecken verwendet.
QByteArray QRhiResource::name() const
Gibt den aktuell festgelegten Objektnamen zurück. Standardmäßig ist der Name leer.
Siehe auch ` setName()`.
[pure virtual] QRhiResource::Type QRhiResource::resourceType() const
Gibt den Typ der Ressource zurück.
QRhi *QRhiResource::rhi() const
Gibt das „ QRhi “ zurück, das diese Ressource erstellt hat.
Wenn der „ QRhi “, der dieses Objekt erstellt hat, bereits zerstört wurde, lautet das Ergebnis „ nullptr “.
void QRhiResource::setName(const QByteArray &name)
Legt eine „ name “ für das Objekt fest.
Dadurch lassen sich aussagekräftige Namen für die nativen Grafikressourcen abrufen, die in Grafik-Debugging-Tools wie RenderDoc und XCode sichtbar sind.
Bei der Benennung nativer Objekte durch Weitergabe des Namens über die entsprechende Grafik-API ist zu beachten, dass der Name ignoriert wird, wenn „ QRhi::DebugMarkers “ nicht unterstützt werden, und je nach Backend möglicherweise auch ignoriert wird, wenn „ QRhi::EnableDebugMarkers “ nicht gesetzt ist.
Hinweis: Der Name wird je nach Backend möglicherweise bei anderen Objekten als Puffern, Renderpuffern und Texturen ignoriert.
Hinweis: Der Name kann geändert werden. Bei Ressourcen mit Slots, wie z. B. einem „ QRhiBuffer “, der auf mehreren nativen Puffern basiert, fügt „ QRhi “ ein Suffix hinzu, um die zugrunde liegenden nativen Puffer leicht voneinander unterscheiden zu können.
Siehe auch name().
[protected delete] QRhiResource &QRhiResource::operator=(const QRhiResource &)
other Weist dieser „ QRhiResource “-Instanz „ “ per Kopierzuweisung zu. Diese Funktion wird gelöscht.
© 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.