QRhiRenderPassDescriptor Class
Renderpass-Ressource. Mehr...
Kopfzeile: | #include <rhi/qrhi.h> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate) |
qmake: | QT += gui-private |
Since: | Qt 6.6 |
Vererbt: | QRhiResource |
Öffentliche Funktionen
virtual bool | isCompatible(const QRhiRenderPassDescriptor *other) const = 0 |
virtual const QRhiNativeHandles * | nativeHandles() |
virtual QRhiRenderPassDescriptor * | newCompatibleRenderPassDescriptor() const = 0 |
virtual QVector<quint32> | serializedFormat() const = 0 |
Reimplementierte öffentliche Funktionen
virtual QRhiResource::Type | resourceType() const override |
Detaillierte Beschreibung
Ein Renderpass, sofern ein solches Konzept in der zugrunde liegenden Grafik-API existiert, ist eine Sammlung von Anhängen (Farbe, Tiefe, Schablone) und beschreibt, wie diese Anhänge verwendet werden.
Hinweis: Dies ist eine RHI-API mit eingeschränkten Kompatibilitätsgarantien, siehe QRhi für Details.
Dokumentation der Mitgliedsfunktionen
[pure virtual]
bool QRhiRenderPassDescriptor::isCompatible(const QRhiRenderPassDescriptor *other) const
Gibt true zurück, wenn die other QRhiRenderPassDescriptor mit dieser kompatibel ist, d.h. this
und other können in QRhiGraphicsPipeline::setRenderPassDescriptor() abwechselnd verwendet werden.
Das Konzept der Kompatibilität von Renderpass-Deskriptoren ist ähnlich wie das layout compatibility von QRhiShaderResourceBindings Instanzen. Sie ermöglichen eine bessere Wiederverwendung von QRhiGraphicsPipeline Instanzen: zum Beispiel wird erwartet, dass ein QRhiGraphicsPipeline Instanz-Cache diese Funktionen verwendet, um nach einer passenden Pipeline zu suchen, anstatt nur Zeiger zu vergleichen, so dass ein anderes QRhiRenderPassDescriptor und QRhiShaderResourceBindings in Kombination mit der Pipeline verwendet werden kann, solange sie kompatibel sind.
Die genauen Details der Kompatibilität hängen von der zugrunde liegenden Grafik-API ab. Zwei Renderpass-Deskriptoren created von derselben QRhiTextureRenderTarget sind immer kompatibel.
Ähnlich wie bei QRhiShaderResourceBindings kann die Kompatibilität auch getestet werden, ohne dass zwei vorhandene Objekte verfügbar sind. Das Extrahieren des opaken Blob durch den Aufruf von serializedFormat() ermöglicht das Testen der Kompatibilität durch den Vergleich des zurückgegebenen Vektors mit einem anderen QRhiRenderPassDescriptor's serializedFormat(). Dies ist in bestimmten Situationen von Vorteil, da die Kompatibilität eines QRhiRenderPassDescriptor mit einem QRhiGraphicsPipeline auch dann getestet werden kann, wenn das QRhiRenderPassDescriptor, mit dem die Pipeline ursprünglich erstellt wurde, nicht mehr verfügbar ist (aber die von serializedFormat() zurückgegebenen Daten noch vorhanden sind).
Siehe auch newCompatibleRenderPassDescriptor() und serializedFormat().
[virtual]
const QRhiNativeHandles *QRhiRenderPassDescriptor::nativeHandles()
Gibt einen Zeiger auf eine Backend-spezifische QRhiNativeHandles Unterklasse zurück, wie z.B. QRhiVulkanRenderPassNativeHandles. Der zurückgegebene Wert ist nullptr
, wenn die zugrundeliegenden nativen Ressourcen vom Backend nicht unterstützt werden.
Siehe auch QRhiVulkanRenderPassNativeHandles.
[pure virtual]
QRhiRenderPassDescriptor *QRhiRenderPassDescriptor::newCompatibleRenderPassDescriptor() const
Gibt ein neues QRhiRenderPassDescriptor zurück, das mit diesem compatible identisch ist.
Mit dieser Funktion kann ein QRhiRenderPassDescriptor geklont werden. Das zurückgegebene Objekt ist einsatzbereit, und das Eigentum geht auf den Aufrufer über. Das Klonen eines QRhiRenderPassDescriptor -Objekts kann in Situationen nützlich sein, in denen das Objekt in Datenstrukturen gespeichert ist, die mit Grafikpipelines zusammenhängen (um die Erstellung neuer Pipelines zu ermöglichen, die wiederum ein Renderpass-Deskriptor-Objekt erfordern), und die Lebensdauer des Renderpass-Deskriptors, der von einem Rendering-Ziel erstellt wird, kürzer sein kann als die der Pipelines. (z.B. weil die Engine Renderpasses zusammen mit den Texturen und Rendertargets, aus denen sie erstellt wurden, verwaltet und vernichtet) In einer solchen Situation kann es von Vorteil sein, eine geklonte Version in den Datenstrukturen zu speichern und damit auch die Eigentumsrechte zu übertragen.
Siehe auch isCompatible().
[override virtual]
QRhiResource::Type QRhiRenderPassDescriptor::resourceType() const
Reimplements: QRhiResource::resourceType() const.
Gibt den Ressourcentyp zurück.
[pure virtual]
QVector<quint32> QRhiRenderPassDescriptor::serializedFormat() const
Gibt einen Vektor von Ganzzahlen zurück, der einen undurchsichtigen Blob enthält, der die für compatibility relevanten Daten beschreibt.
Bei zwei QRhiRenderPassDescriptor Objekten rp1
und rp2
gilt: Sind die von dieser Funktion zurückgegebenen Daten identisch, dann gilt auch rp1->isCompatible(rp2)
und umgekehrt.
Hinweis: Die zurückgegebenen Daten sind für die Speicherung im Speicher und für Vergleiche während der Lebensdauer des QRhi bestimmt, zu dem das Objekt gehört. Sie sind nicht für die Speicherung auf der Festplatte, die Wiederverwendung zwischen Prozessen oder die Verwendung mit mehreren QRhi Instanzen mit potenziell unterschiedlichen Backends gedacht.
Siehe auch isCompatible().
© 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.