Auf dieser Seite

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:
12 Typen

QRhiBuffer, QRhiCommandBuffer, QRhiComputePipeline, QRhiGraphicsPipeline, QRhiRenderBuffer, QRhiRenderPassDescriptor, QRhiRenderTarget, QRhiSampler, QRhiShaderResourceBindings, QRhiShadingRateMap, QRhiSwapChain sowie QRhiTexture

Ö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.

KonstanteWert
QRhiResource::Buffer0
QRhiResource::Texture1
QRhiResource::Sampler2
QRhiResource::RenderBuffer3
QRhiResource::RenderPassDescriptor4
QRhiResource::SwapChainRenderTarget5
QRhiResource::TextureRenderTarget6
QRhiResource::ShaderResourceBindings7
QRhiResource::GraphicsPipeline8
QRhiResource::SwapChain9
QRhiResource::ComputePipeline10
QRhiResource::CommandBuffer11
QRhiResource::ShadingRateMap12

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.