Auf dieser Seite

QRhiTextureRenderTarget Class

Ressource für Textur-Renderziel. 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: QRhiRenderTarget

Öffentliche Typen

enum Flag { PreserveColorContents, PreserveDepthStencilContents, DoNotStoreDepthStencilContents }
flags Flags

Öffentliche Funktionen

virtual bool create() = 0
QRhiTextureRenderTargetDescription description() const
QRhiTextureRenderTarget::Flags flags() const
virtual QRhiRenderPassDescriptor *newCompatibleRenderPassDescriptor() = 0
void setDescription(const QRhiTextureRenderTargetDescription &desc)
void setFlags(QRhiTextureRenderTarget::Flags f)

Neu implementierte öffentliche Funktionen

virtual QRhiResource::Type resourceType() const override

Ausführliche Beschreibung

Ein Textur-Renderziel ermöglicht das Rendern in eine oder mehrere Texturen, optional mit einer Tiefentextur oder einem Tiefen-/Stencil-Renderbuffer.

Beim Multisample-Rendering ist es üblich, einen Renderbuffer als „color attachment“ zu verwenden und die Nicht-Multisample-Zieltextur als „ resolve texture “ festzulegen. Weitere Informationen finden Sie in der detaillierten Beschreibung der Klasse „ QRhiColorAttachment “.

Hinweis: Texturen , die in Kombination mit „QRhiTextureRenderTarget“ verwendet werden, müssen mit dem Flag „ QRhiTexture::RenderTarget “ erstellt werden.

Das einfachste Beispiel für die Erstellung eines Render-Targets mit einer Textur als einzigem Farb-Attachment:

QRhiTexture *texture = rhi->newTexture(QRhiTexture::RGBA8, size, 1, QRhiTexture::RenderTarget);
texture->create();
QRhiTextureRenderTarget *rt = rhi->newTextureRenderTarget({ texture });
rp = rt->newCompatibleRenderPassDescriptor();
rt->setRenderPassDescriptor(rp);
rt->create();
// rt can now be used with beginPass()

Hinweis: Hierbei handelt es sich um eine RHI-API mit eingeschränkten Kompatibilitätsgarantien; weitere Informationen finden Sie unter „ QRhi “.

Dokumentation zu Mitgliedstypen

enum QRhiTextureRenderTarget::Flag
flags QRhiTextureRenderTarget::Flags

Flag-Werte, die das Lade-/Speicherverhalten für das Renderziel beschreiben. Das Lade-/Speicherverhalten kann je nach Backend intern in native Ressourcen eingebettet sein; daher muss es im Voraus bekannt sein und kann nicht ohne einen Neuaufbau (und damit die Freigabe und Erstellung neuer nativer Ressourcen) geändert werden.

KonstanteWertBeschreibung
QRhiTextureRenderTarget::PreserveColorContents1 << 0Gibt an, dass der Inhalt der Farb-Attachments beim Start eines Render-Passes geladen werden soll, anstatt gelöscht zu werden. Dies ist potenziell rechenintensiver, insbesondere auf mobilen (gekachelten) GPUs, ermöglicht jedoch die Beibehaltung des bestehenden Inhalts zwischen den Pässen. Beim Multisample-Rendering mit einem „Resolve“-Textursatz bewirkt das Setzen dieses Flags außerdem, dass die Multisample-Farbdaten in der Multisample-Textur oder im Render-Puffer gespeichert (ausgeschrieben) werden. (Beim Nicht-Multisample-Rendering werden die Farbdaten immer gespeichert; beim MSAA verringert das Speichern der Multisample-Daten jedoch bei bestimmten GPU-Architekturen die Effizienz, weshalb standardmäßig kein Auslesen erfolgt) Beachten Sie jedoch, dass dies nicht portabel ist: In einigen Fällen gibt es auf der Ebene der Grafik-API keine zwischengeschaltete Multisample-Textur, z. B. bei Verwendung des „ GL_EXT_multisampled_render_to_texture “ von OpenGL ES, da dies alles implizit erfolgt und von der OpenGL-ES-Implementierung gehandhabt wird. In diesem Fall hat „PreserveColorContents“ wahrscheinlich keine Wirkung. Vermeiden Sie es daher, sich auf dieses Flag zu verlassen, wenn Sie Multisample-Rendering verwenden und der Farb-Attachment eine Multisample- QRhiTexture verwendet (nicht QRhiRenderBuffer).
QRhiTextureRenderTarget::PreserveDepthStencilContents1 << 1Gibt an, dass der Inhalt der Tiefentextur beim Start eines Renderdurchgangs geladen werden soll, anstatt gelöscht zu werden. Gilt nur, wenn eine Textur als Tiefenpuffer verwendet wird (QRhiTextureRenderTargetDescription::depthTexture() ist gesetzt), da Tiefen-/Stencil-Renderpuffer möglicherweise keine physische Grundlage haben und Daten möglicherweise gar nicht erst geschrieben werden.
QRhiTextureRenderTarget::DoNotStoreDepthStencilContents1 << 2Gibt an, dass der Inhalt der Tiefentextur nicht geschrieben werden muss. Relevant nur, wenn eine ` QRhiTexture` und nicht ` QRhiRenderBuffer` als Tiefen-Stencil-Puffer verwendet wird, da dies bei ` QRhiRenderBuffer ` implizit ist. Wenn `depthResolveTexture` gesetzt ist, ist das Flag irrelevant, da das Verhalten dann so ist, als wäre das Flag gesetzt. Dieser Enum-Wert wurde in Qt 6.8 eingeführt.

Der Typ „Flags“ ist ein typedef für QFlags<Flag>. Er speichert eine ODER-Kombination von Flag-Werten.

Dokumentation der Mitgliedsfunktionen

[pure virtual] bool QRhiTextureRenderTarget::create()

Erstellt die entsprechenden nativen Grafikressourcen. Wenn aufgrund eines früheren Aufrufs von `create()` ohne entsprechenden ` destroy()` bereits Ressourcen vorhanden sind, wird zunächst implizit ` destroy()` aufgerufen.

Hinweis: renderPassDescriptor() muss vor dem Aufruf von create() festgelegt werden. Um einen mit dem Renderziel kompatiblen QRhiRenderPassDescriptor zu erhalten, rufen Sie newCompatibleRenderPassDescriptor() vor create() auf, jedoch nachdem alle anderen Parameter wie description() und flags() festgelegt wurden. Um Ressourcen zu sparen, verwenden Sie nach Möglichkeit denselben QRhiRenderPassDescriptor für mehrere QRhiTextureRenderTarget -Instanzen. Die gemeinsame Nutzung desselben Render-Pass-Deskriptors ist nur möglich, wenn die Render-Targets dieselbe Anzahl und denselben Typ von Anhängen (die eigentlichen Texturen können sich unterscheiden) sowie dieselben Flags aufweisen.

Hinweis: Für Ressourcen , wie z. B. „ QRhiTexture “-Instanzen, auf die in „ description()“ verwiesen wird, muss zuvor die Funktion „create()“ aufgerufen worden sein.

Gibt bei Erfolg „ true “ zurück, bei einem fehlgeschlagenen Grafikvorgang „ false “. Unabhängig vom Rückgabewert ist der Aufruf von „ destroy()“ immer sicher.

QRhiTextureRenderTargetDescription QRhiTextureRenderTarget::description() const

Gibt die Beschreibung des Renderziels zurück.

Siehe auch „ setDescription()“.

QRhiTextureRenderTarget::Flags QRhiTextureRenderTarget::flags() const

Gibt die derzeit gesetzten Flags zurück.

Siehe auch ` setFlags()`.

[pure virtual] QRhiRenderPassDescriptor *QRhiTextureRenderTarget::newCompatibleRenderPassDescriptor()

Gibt ein neues ` QRhiRenderPassDescriptor ` zurück, das mit diesem Renderziel kompatibel ist.

Der zurückgegebene Wert wird auf zwei Arten verwendet: Er kann an ` setRenderPassDescriptor()` und ` QRhiGraphicsPipeline::setRenderPassDescriptor()` übergeben werden. Ein Render-Pass-Deskriptor beschreibt die Anhänge (Farbe, Tiefe/Stencil) sowie das Lade-/Speicherverhalten, das durch ` flags()` beeinflusst werden kann. Ein ` QRhiGraphicsPipeline ` kann nur in Kombination mit einem Renderziel verwendet werden, für das ein ` compatible ` QRhiRenderPassDescriptor festgelegt ist.

Zwei „ QRhiTextureRenderTarget “-Instanzen können denselben Render-Pass-Deskriptor gemeinsam nutzen, solange sie dieselbe Anzahl und denselben Typ von Anhängen aufweisen. Die zugehörigen „ QRhiTexture “- oder „ QRhiRenderBuffer “-Instanzen sind nicht Teil des Render-Pass-Deskriptors, sodass diese in den beiden „ QRhiTextureRenderTarget “-Instanzen unterschiedlich sein können.

Hinweis: Ressourcen , wie z. B. „ QRhiTexture “-Instanzen, auf die in „ description()“ verwiesen wird, müssen bereits mit „ create()“ aufgerufen worden sein.

Siehe auch ` create()`.

[override virtual] QRhiResource::Type QRhiTextureRenderTarget::resourceType() const

Implementiert neu: QRhiResource::resourceType() const.

Gibt den Ressourcentyp zurück.

void QRhiTextureRenderTarget::setDescription(const QRhiTextureRenderTargetDescription &desc)

Legt die Beschreibung des Renderziels fest: desc.

Siehe auch description().

void QRhiTextureRenderTarget::setFlags(QRhiTextureRenderTarget::Flags f)

Setzt die Flags auf „ f “.

Siehe auch „ flags()“.

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