QRhiGraphicsPipeline Class

Grafik-Pipeline-Zustandsressource. 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 Typen

(since 6.6) struct StencilOpState
(since 6.6) struct TargetBlend
enum BlendFactor { Zero, One, SrcColor, OneMinusSrcColor, DstColor, …, OneMinusSrc1Alpha }
enum BlendOp { Add, Subtract, ReverseSubtract, Min, Max }
flags ColorMask
enum ColorMaskComponent { R, G, B, A }
enum CompareOp { Never, Less, Equal, LessOrEqual, Greater, …, Always }
enum CullMode { None, Front, Back }
enum Flag { UsesBlendConstants, UsesStencilRef, UsesScissor, CompileShadersWithDebugInfo }
flags Flags
enum FrontFace { CCW, CW }
enum PolygonMode { Fill, Line }
enum StencilOp { StencilZero, Keep, Replace, IncrementAndClamp, DecrementAndClamp, …, DecrementAndWrap }
enum Topology { Triangles, TriangleStrip, TriangleFan, Lines, LineStrip, …, Patches }

Öffentliche Funktionen

const QRhiShaderStage *cbeginShaderStages() const
const QRhiGraphicsPipeline::TargetBlend *cbeginTargetBlends() const
const QRhiShaderStage *cendShaderStages() const
const QRhiGraphicsPipeline::TargetBlend *cendTargetBlends() const
virtual bool create() = 0
QRhiGraphicsPipeline::CullMode cullMode() const
int depthBias() const
QRhiGraphicsPipeline::CompareOp depthOp() const
QRhiGraphicsPipeline::Flags flags() const
QRhiGraphicsPipeline::FrontFace frontFace() const
bool hasDepthTest() const
bool hasDepthWrite() const
bool hasStencilTest() const
float lineWidth() const
(since 6.7) int multiViewCount() const
int patchControlPointCount() const
QRhiGraphicsPipeline::PolygonMode polygonMode() const
QRhiRenderPassDescriptor *renderPassDescriptor() const
int sampleCount() const
void setCullMode(QRhiGraphicsPipeline::CullMode mode)
void setDepthBias(int bias)
void setDepthOp(QRhiGraphicsPipeline::CompareOp op)
void setDepthTest(bool enable)
void setDepthWrite(bool enable)
void setFlags(QRhiGraphicsPipeline::Flags f)
void setFrontFace(QRhiGraphicsPipeline::FrontFace f)
void setLineWidth(float width)
(since 6.7) void setMultiViewCount(int count)
void setPatchControlPointCount(int count)
void setPolygonMode(QRhiGraphicsPipeline::PolygonMode mode)
void setRenderPassDescriptor(QRhiRenderPassDescriptor *desc)
void setSampleCount(int s)
void setShaderResourceBindings(QRhiShaderResourceBindings *srb)
void setShaderStages(std::initializer_list<QRhiShaderStage> list)
void setShaderStages(InputIterator first, InputIterator last)
void setSlopeScaledDepthBias(float bias)
void setStencilBack(const QRhiGraphicsPipeline::StencilOpState &state)
void setStencilFront(const QRhiGraphicsPipeline::StencilOpState &state)
void setStencilReadMask(quint32 mask)
void setStencilTest(bool enable)
void setStencilWriteMask(quint32 mask)
void setTargetBlends(std::initializer_list<QRhiGraphicsPipeline::TargetBlend> list)
void setTargetBlends(InputIterator first, InputIterator last)
void setTopology(QRhiGraphicsPipeline::Topology t)
void setVertexInputLayout(const QRhiVertexInputLayout &layout)
QRhiShaderResourceBindings *shaderResourceBindings() const
const QRhiShaderStage *shaderStageAt(qsizetype index) const
qsizetype shaderStageCount() const
float slopeScaledDepthBias() const
QRhiGraphicsPipeline::StencilOpState stencilBack() const
QRhiGraphicsPipeline::StencilOpState stencilFront() const
quint32 stencilReadMask() const
quint32 stencilWriteMask() const
const QRhiGraphicsPipeline::TargetBlend *targetBlendAt(qsizetype index) const
qsizetype targetBlendCount() const
QRhiGraphicsPipeline::Topology topology() const
QRhiVertexInputLayout vertexInputLayout() const

Reimplementierte öffentliche Funktionen

virtual QRhiResource::Type resourceType() const override

Detaillierte Beschreibung

Stellt eine Grafik-Pipeline dar. Was genau dies in der zugrunde liegenden nativen Grafik-API abbildet, ist unterschiedlich. Wo es ein Konzept von Pipeline-Objekten gibt, z. B. bei Vulkan, erstellt das Backend QRhi ein solches Objekt beim Aufruf von create(). In anderen Fällen, z. B. bei OpenGL, sammelt die QRhiGraphicsPipeline lediglich die verschiedenen Zustände, und die Hauptaufgabe von create() besteht darin, das entsprechende Shader-Programm einzurichten, wobei die Betrachtung der angeforderten Zustände auf einen späteren Zeitpunkt verschoben wird.

Wie bei allen QRhiResource Unterklassen gilt das zweistufige Initialisierungsmuster: Das Setzen von Werten über die Setter, z.B. setDepthTest(), ist erst nach dem Aufruf von create() wirksam. Vermeiden Sie es, irgendwelche Werte zu ändern, nachdem die QRhiGraphicsPipeline über create() initialisiert wurde. Um einen Zustand zu ändern, setzen Sie den neuen Wert und rufen Sie create() erneut auf. Dadurch werden jedoch alle zugrunde liegenden nativen Ressourcen freigegeben und neue erzeugt. Infolgedessen kann dies ein schwerer, teurer Vorgang sein. Ziehen Sie es vor, mehrere Pipelines mit den verschiedenen Zuständen zu erstellen, und switch between them bei der Aufzeichnung des Rendering-Durchgangs.

Hinweis: Die Einstellung der Shader-Stufen ist obligatorisch. Es muss mindestens eine Stufe und eine Vertex-Stufe vorhanden sein.

Hinweis: Das Einstellen der Shader-Ressourcenbindungen ist obligatorisch. Das referenzierte QRhiShaderResourceBindings muss bereits create() aufgerufen haben, wenn create() aufgerufen wird. Die Assoziation mit einem QRhiShaderResourceBindings, das keine Bindungen hat, ist ebenfalls gültig, solange kein Shader in irgendeiner Stufe irgendwelche Ressourcen erwartet. Die Verwendung eines QRhiShaderResourceBindings Objekts, das keine tatsächlichen Ressourcen spezifiziert (d.h. die Puffer, Texturen usw. für die Bindungspunkte werden auf nullptr gesetzt), ist ebenfalls gültig, solange ein layout-compatible QRhiShaderResourceBindings , das Ressourcen für alle Bindungen spezifiziert, über setShaderResources() gesetzt wird, wenn der Renderpass aufgezeichnet wird.

Hinweis: Das Setzen des Renderpass-Deskriptors ist obligatorisch. Um eine QRhiRenderPassDescriptor zu erhalten, die an setRenderPassDescriptor() übergeben werden kann, verwenden Sie entweder QRhiTextureRenderTarget::newCompatibleRenderPassDescriptor() oder QRhiSwapChain::newCompatibleRenderPassDescriptor().

Hinweis: Das Setzen des Vertex-Input-Layouts ist obligatorisch.

Hinweis: sampleCount() ist standardmäßig auf 1 eingestellt und muss mit der Sampleanzahl der Farb- und Tiefenschablonenanhänge des Rendering-Ziels übereinstimmen.

Hinweis: Der Tiefentest, das Tiefenschreiben und der Schablonentest sind standardmäßig deaktiviert. Der Modus für die Flächenauslese ist standardmäßig auf "keine Auslese" eingestellt.

Hinweis: stencilReadMask() und stencilWriteMask() gelten für beide Flächen. Sie sind beide standardmäßig auf 0xFF eingestellt.

Beispiel für die Verwendung

Alle Einstellungen einer Grafikpipeline haben Voreinstellungen, die für viele Anwendungen geeignet sein könnten. Daher könnte ein minimales Beispiel für die Erstellung einer Grafikpipeline wie folgt aussehen. Dabei wird davon ausgegangen, dass der Vertex-Shader eine einzelne vec3 position -Eingabe an der Eingabeposition 0 erhält. Mit den Objekten QRhiShaderResourceBindings und QRhiRenderPassDescriptor sowie den Sammlungen QShader für die Vertex- und Fragmentstufen könnte eine Pipeline wie folgt erstellt werden:

QRhiShaderResourceBindings *srb;
QRhiRenderPassDescriptor *rpDesc;
QShader vs, fs;
// ...

QRhiVertexInputLayout inputLayout;
inputLayout.setBindings({ { 3 * sizeof(float) } });
inputLayout.setAttributes({ { 0, 0, QRhiVertexInputAttribute::Float3, 0 } });

QRhiGraphicsPipeline *ps = rhi->newGraphicsPipeline();
ps->setShaderStages({ { QRhiShaderStage::Vertex, vs }, { QRhiShaderStage::Fragment, fs } });
ps->setVertexInputLayout(inputLayout);
ps->setShaderResourceBindings(srb);
ps->setRenderPassDescriptor(rpDesc);
if (!ps->create()) { error(); }

Der obige Code erstellt ein Pipeline-Objekt, das für viele Einstellungen und Zustände die Standardwerte verwendet. Zum Beispiel wird eine Triangles Topologie verwendet, kein Backface Culling, Blending ist deaktiviert, aber Color Write ist für alle vier Kanäle aktiviert, Depth Test/Write sind deaktiviert, Stencil Operationen sind deaktiviert.

Hinweis: Dies ist eine RHI-API mit eingeschränkten Kompatibilitätsgarantien, siehe QRhi für Details.

Siehe auch QRhiCommandBuffer und QRhi.

Dokumentation der Mitgliedstypen

enum QRhiGraphicsPipeline::BlendFactor

Gibt den Überblendfaktor an

KonstanteWert
QRhiGraphicsPipeline::Zero0
QRhiGraphicsPipeline::One1
QRhiGraphicsPipeline::SrcColor2
QRhiGraphicsPipeline::OneMinusSrcColor3
QRhiGraphicsPipeline::DstColor4
QRhiGraphicsPipeline::OneMinusDstColor5
QRhiGraphicsPipeline::SrcAlpha6
QRhiGraphicsPipeline::OneMinusSrcAlpha7
QRhiGraphicsPipeline::DstAlpha8
QRhiGraphicsPipeline::OneMinusDstAlpha9
QRhiGraphicsPipeline::ConstantColor10
QRhiGraphicsPipeline::OneMinusConstantColor11
QRhiGraphicsPipeline::ConstantAlpha12
QRhiGraphicsPipeline::OneMinusConstantAlpha13
QRhiGraphicsPipeline::SrcAlphaSaturate14
QRhiGraphicsPipeline::Src1Color15
QRhiGraphicsPipeline::OneMinusSrc1Color16
QRhiGraphicsPipeline::Src1Alpha17
QRhiGraphicsPipeline::OneMinusSrc1Alpha18

enum QRhiGraphicsPipeline::BlendOp

Legt den Mischvorgang fest

KonstanteWert
QRhiGraphicsPipeline::Add0
QRhiGraphicsPipeline::Subtract1
QRhiGraphicsPipeline::ReverseSubtract2
QRhiGraphicsPipeline::Min3
QRhiGraphicsPipeline::Max4

enum QRhiGraphicsPipeline::ColorMaskComponent
flags QRhiGraphicsPipeline::ColorMask

Flag-Werte zur Angabe der Farbschreibmaske

KonstanteWert
QRhiGraphicsPipeline::R1 << 0
QRhiGraphicsPipeline::G1 << 1
QRhiGraphicsPipeline::B1 << 2
QRhiGraphicsPipeline::A1 << 3

Der Typ ColorMask ist ein Typedef für QFlags<ColorMaskComponent>. Er speichert eine ODER-Kombination von ColorMaskComponent-Werten.

enum QRhiGraphicsPipeline::CompareOp

Gibt die Tiefen- oder Schablonenvergleichsfunktion an

KonstanteWertBeschreibung
QRhiGraphicsPipeline::Never0
QRhiGraphicsPipeline::Less1(Voreinstellung für Tiefe)
QRhiGraphicsPipeline::Equal2
QRhiGraphicsPipeline::LessOrEqual3
QRhiGraphicsPipeline::Greater4
QRhiGraphicsPipeline::NotEqual5
QRhiGraphicsPipeline::GreaterOrEqual6
QRhiGraphicsPipeline::Always7(Standardwert für Schablone)

enum QRhiGraphicsPipeline::CullMode

Gibt den Culling-Modus an

KonstanteWertBeschreibung
QRhiGraphicsPipeline::None0Kein Culling (Standard)
QRhiGraphicsPipeline::Front1Vordere Flächen ausblenden
QRhiGraphicsPipeline::Back2Rückseiten ausblenden

enum QRhiGraphicsPipeline::Flag
flags QRhiGraphicsPipeline::Flags

Flag-Werte zur Beschreibung des dynamischen Zustands der Pipeline und anderer Optionen. Das Ansichtsfenster ist immer dynamisch.

KonstanteWertBeschreibung
QRhiGraphicsPipeline::UsesBlendConstants1 << 0Zeigt an, dass eine Blend-Farbkonstante über QRhiCommandBuffer::setBlendConstants() gesetzt wird.
QRhiGraphicsPipeline::UsesStencilRef1 << 1Zeigt an, dass ein Schablonenreferenzwert über QRhiCommandBuffer::setStencilRef() gesetzt wird.
QRhiGraphicsPipeline::UsesScissor1 << 2Zeigt an, dass ein Scherenrechteck über QRhiCommandBuffer::setScissor() gesetzt wird.
QRhiGraphicsPipeline::CompileShadersWithDebugInfo1 << 3Fordert die Kompilierung von Shadern mit aktivierten Debug-Informationen an. Dies ist nur relevant, wenn es um die Kompilierung von Shadern zur Laufzeit aus dem Quellcode geht, und nur, wenn die zugrunde liegende Infrastruktur dies unterstützt. Bei konkreten Beispielen ist dies bei Vulkan und SPIR-V nicht relevant, da die GLSL-zu-SPIR-V-Kompilierung nicht zur Laufzeit erfolgt. Bei Direct3D und HLSL hingegen gibt es mehrere Optionen: Wenn die Pakete QShader mit vorkompiliertem Bytecode (DXBC) ausgeliefert werden, müssen Debug-Informationen über das Tool angefordert werden, das die Datei .qsb generiert, ähnlich wie im Fall von Vulkan und SPIR-V. Wenn jedoch HLSL-Quellcode in den vor- oder zur Laufzeit generierten QShader -Paketen enthalten ist, erfolgt die erste Phase der Kompilierung (HLSL-Quellcode in das Zwischenformat) ebenfalls zur Laufzeit, wobei dieses Kennzeichen berücksichtigt wird. Debug-Informationen sind insbesondere mit Tools wie RenderDoc relevant, da sie bei der Untersuchung der Pipeline und beim Debuggen von Vertex- oder Fragment-Shadern den Original-Quellcode sichtbar machen.

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

enum QRhiGraphicsPipeline::FrontFace

Legt die Reihenfolge der Aufwicklung der Vorderseite fest

KonstanteWertBeschreibung
QRhiGraphicsPipeline::CCW0Gegen den Uhrzeigersinn (Standard)
QRhiGraphicsPipeline::CW1Im Uhrzeigersinn

enum QRhiGraphicsPipeline::PolygonMode

Legt den Polygonrasterungsmodus fest

Polygon Mode (Triangle Fill Mode in Metal, Fill Mode in D3D) gibt den Füllmodus an, der beim Rastern von Polygonen verwendet wird. Polygone können als Volumenkörper (Fill) oder als Drahtgitter (Line) gezeichnet werden.

Die Unterstützung von Nicht-Füll-Polygonmodi ist optional und wird durch das Feature QRhi::NonFillPolygonMode angezeigt. Bei OpenGL ES und einigen Vulkan-Implementierungen wird das Feature wahrscheinlich als nicht unterstützt gemeldet, was dann bedeutet, dass andere Werte als Fill nicht verwendet werden können.

KonstanteWertBeschreibung
QRhiGraphicsPipeline::Fill0Das Innere des Polygons wird gefüllt (Standard)
QRhiGraphicsPipeline::Line1Die Ränder des Polygons werden als Liniensegmente gezeichnet.

enum QRhiGraphicsPipeline::StencilOp

Gibt die Schablonenoperation an

KonstanteWertBeschreibung
QRhiGraphicsPipeline::StencilZero0
QRhiGraphicsPipeline::Keep1(Voreinstellung)
QRhiGraphicsPipeline::Replace2
QRhiGraphicsPipeline::IncrementAndClamp3
QRhiGraphicsPipeline::DecrementAndClamp4
QRhiGraphicsPipeline::Invert5
QRhiGraphicsPipeline::IncrementAndWrap6
QRhiGraphicsPipeline::DecrementAndWrap7

enum QRhiGraphicsPipeline::Topology

Gibt die primitive Topologie an

KonstanteWertBeschreibung
QRhiGraphicsPipeline::Triangles0(Voreinstellung)
QRhiGraphicsPipeline::TriangleStrip1
QRhiGraphicsPipeline::TriangleFan2(nur verfügbar, wenn QRhi::TriangleFanTopology unterstützt wird)
QRhiGraphicsPipeline::Lines3
QRhiGraphicsPipeline::LineStrip4
QRhiGraphicsPipeline::Points5
QRhiGraphicsPipeline::Patches6(nur verfügbar, wenn QRhi::Tessellation unterstützt wird, und erfordert, dass die Tesselierungsstufen in der Pipeline vorhanden sind)

Dokumentation der Mitgliedsfunktionen

const QRhiShaderStage *QRhiGraphicsPipeline::cbeginShaderStages() const

Gibt einen konstanten Iterator zurück, der auf das erste Element in der Shader-Stage-Liste zeigt.

const QRhiGraphicsPipeline::TargetBlend *QRhiGraphicsPipeline::cbeginTargetBlends() const

Gibt einen konstanten Iterator zurück, der auf das erste Element in der Liste der Rendering-Ziel-Mischeinstellungen zeigt.

const QRhiShaderStage *QRhiGraphicsPipeline::cendShaderStages() const

Gibt einen konstanten Iterator zurück, der direkt auf das letzte Element in der Shader-Stage-Liste zeigt.

const QRhiGraphicsPipeline::TargetBlend *QRhiGraphicsPipeline::cendTargetBlends() const

Gibt einen konstanten Iterator zurück, der direkt auf das letzte Element in der Liste der Rendering-Ziel-Mischeinstellungen zeigt.

[pure virtual] bool QRhiGraphicsPipeline::create()

Erzeugt die entsprechenden nativen Grafikressourcen. Wenn aufgrund eines früheren create() ohne entsprechende destroy() bereits Ressourcen vorhanden sind, wird destroy() implizit zuerst aufgerufen.

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

Hinweis: Abhängig von der zugrunde liegenden Grafik-API kann dies eine teure Operation sein, insbesondere wenn Shader aus dem Quellcode oder aus einem Bytecode-Zwischenformat in den GPU-eigenen Befehlssatz kompiliert/optimiert werden. Gegebenenfalls richtet das QRhi Backend automatisch die entsprechenden nicht-persistenten Einrichtungen ein, um diesen Vorgang zu beschleunigen, z. B. erstellt das Vulkan Backend automatisch eine VkPipelineCache, um die Wiederverwendung von Daten während der Lebensdauer der Anwendung zu verbessern.

Hinweis: Treiber können auch verschiedene persistente (plattenbasierte) Caching-Strategien für Shader- und Pipeline-Daten verwenden, die für Qt verborgen sind und außerhalb der Kontrolle von Qt liegen. In einigen Fällen, abhängig von der Grafik-API und dem QRhi Backend, gibt es innerhalb von QRhi Möglichkeiten, einen solchen Cache manuell zu verwalten, was das Abrufen eines serialisierbaren Blob ermöglicht, der dann in zukünftigen Läufen der Anwendung neu geladen werden kann, um schnellere Pipeline-Erstellungszeiten zu gewährleisten. Siehe QRhi::pipelineCacheData() und QRhi::setPipelineCacheData() für Details. Beachten Sie auch, dass bei der Arbeit mit einer QRhi Instanz, die von einem Qt-Framework auf höherer Ebene verwaltet wird, wie z.B. Qt Quick, es möglich ist, dass ein solches festplattenbasiertes Caching automatisch durchgeführt wird, z.B. verwendet QQuickWindow standardmäßig einen festplattenbasierten Pipeline-Cache (der zusätzlich zu jeglichem Caching auf Treiberebene zur Verfügung steht).

QRhiGraphicsPipeline::CullMode QRhiGraphicsPipeline::cullMode() const

Gibt den aktuell eingestellten Modus für die Gesichtsauslese zurück.

Siehe auch setCullMode().

int QRhiGraphicsPipeline::depthBias() const

Gibt die aktuell eingestellte Tiefenverzerrung zurück.

Siehe auch setDepthBias().

QRhiGraphicsPipeline::CompareOp QRhiGraphicsPipeline::depthOp() const

Gibt die Tiefenvergleichsfunktion zurück.

Siehe auch setDepthOp().

QRhiGraphicsPipeline::Flags QRhiGraphicsPipeline::flags() const

Gibt die aktuell gesetzten Flags zurück.

Siehe auch setFlags().

QRhiGraphicsPipeline::FrontFace QRhiGraphicsPipeline::frontFace() const

Gibt den aktuell eingestellten Frontalmodus zurück.

Siehe auch setFrontFace().

bool QRhiGraphicsPipeline::hasDepthTest() const

Gibt true zurück, wenn die Tiefenprüfung aktiviert ist.

bool QRhiGraphicsPipeline::hasDepthWrite() const

Gibt true zurück, wenn das Schreiben in die Tiefe aktiviert ist.

bool QRhiGraphicsPipeline::hasStencilTest() const

Gibt true zurück, wenn die Schablonenprüfung aktiviert ist.

float QRhiGraphicsPipeline::lineWidth() const

Gibt die aktuell eingestellte Linienbreite zurück. Die Vorgabe ist 1.0f.

Siehe auch setLineWidth().

[since 6.7] int QRhiGraphicsPipeline::multiViewCount() const

Gibt die Anzahl der Ansichten zurück. Der Standardwert ist 0, was bedeutet, dass kein Multiview-Rendering stattfindet.

Diese Funktion wurde in Qt 6.7 eingeführt.

Siehe auch setMultiViewCount().

int QRhiGraphicsPipeline::patchControlPointCount() const

Gibt die Anzahl der aktuell eingestellten Patch-Kontrollpunkte zurück.

Siehe auch setPatchControlPointCount().

QRhiGraphicsPipeline::PolygonMode QRhiGraphicsPipeline::polygonMode() const

Gibt den Polygonmodus zurück.

Siehe auch setPolygonMode().

QRhiRenderPassDescriptor *QRhiGraphicsPipeline::renderPassDescriptor() const

Gibt die aktuell eingestellte QRhiRenderPassDescriptor zurück.

Siehe auch setRenderPassDescriptor().

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

Reimplements: QRhiResource::resourceType() const.

Gibt den Ressourcentyp zurück.

int QRhiGraphicsPipeline::sampleCount() const

Gibt die aktuell eingestellte Sampleanzahl zurück. 1 bedeutet kein Multisample-Antialiasing.

Siehe auch setSampleCount().

void QRhiGraphicsPipeline::setCullMode(QRhiGraphicsPipeline::CullMode mode)

Setzt das angegebene Face Culling mode.

Siehe auch cullMode().

void QRhiGraphicsPipeline::setDepthBias(int bias)

Legt die Tiefe bias fest. Der Standardwert ist 0.

Siehe auch depthBias().

void QRhiGraphicsPipeline::setDepthOp(QRhiGraphicsPipeline::CompareOp op)

Legt die Tiefenvergleichsfunktion op fest.

Siehe auch depthOp().

void QRhiGraphicsPipeline::setDepthTest(bool enable)

Aktiviert oder deaktiviert die Tiefenprüfung auf der Grundlage von enable. Sowohl die Tiefenprüfung als auch das Schreiben der Tiefendaten sind standardmäßig deaktiviert.

Siehe auch hasDepthTest() und setDepthWrite().

void QRhiGraphicsPipeline::setDepthWrite(bool enable)

Steuert das Schreiben von Tiefendaten in den Tiefenpuffer auf der Grundlage von enable. Standardmäßig ist dies deaktiviert. Das Schreiben in die Tiefe wird normalerweise zusammen mit der Tiefenprüfung aktiviert.

Hinweis: Das Aktivieren von depth write ohne aktivierte Tiefenprüfung führt möglicherweise nicht zum gewünschten Ergebnis und sollte daher vermieden werden.

Siehe auch hasDepthWrite() und setDepthTest().

void QRhiGraphicsPipeline::setFlags(QRhiGraphicsPipeline::Flags f)

Setzt die Flags f.

Siehe auch flags().

void QRhiGraphicsPipeline::setFrontFace(QRhiGraphicsPipeline::FrontFace f)

Stellt den Frontalmodus f ein.

Siehe auch frontFace().

void QRhiGraphicsPipeline::setLineWidth(float width)

Legt die Zeile width fest. Wenn die Funktion QRhi::WideLines zur Laufzeit als nicht unterstützt gemeldet wird, werden andere Werte als 1.0f ignoriert.

Siehe auch lineWidth().

[since 6.7] void QRhiGraphicsPipeline::setMultiViewCount(int count)

Legt die Ansicht count für Multiview-Rendering fest. Der Standardwert ist 0, was bedeutet, dass kein Multiview-Rendering stattfindet. count muss 2 oder größer sein, um Multiview-Rendering auszulösen.

Multiview ist nur verfügbar, wenn die MultiView feature als unterstützt gemeldet wird. Das Rendering-Ziel muss ein 2D-Textur-Array sein, und das Farbattachment für das Rendering-Ziel muss denselben count -Satz haben.

Siehe QRhiColorAttachment::setMultiViewCount() für weitere Details zum Multiview-Rendering.

Diese Funktion wurde in Qt 6.7 eingeführt.

Siehe auch multiViewCount(), QRhi::MultiView, und QRhiColorAttachment::setMultiViewCount().

void QRhiGraphicsPipeline::setPatchControlPointCount(int count)

Legt die Anzahl der Patch-Kontrollpunkte auf count fest. Der Standardwert ist 3. Dies wird nur verwendet, wenn die Topologie auf Patches eingestellt ist.

Siehe auch patchControlPointCount().

void QRhiGraphicsPipeline::setPolygonMode(QRhiGraphicsPipeline::PolygonMode mode)

Legt das Polygon mode fest. Die Standardeinstellung ist Füllen.

Siehe auch polygonMode() und QRhi::NonFillPolygonMode.

void QRhiGraphicsPipeline::setRenderPassDescriptor(QRhiRenderPassDescriptor *desc)

Assoziiert mit dem angegebenen QRhiRenderPassDescriptor desc .

Siehe auch renderPassDescriptor().

void QRhiGraphicsPipeline::setSampleCount(int s)

Legt die Anzahl der Proben fest. Typische Werte für s sind 1, 4 oder 8. Die Pipeline muss immer mit dem Rendering-Ziel kompatibel sein, d. h. die Sample-Zahlen müssen übereinstimmen.

Siehe auch sampleCount() und QRhi::supportedSampleCounts().

void QRhiGraphicsPipeline::setShaderResourceBindings(QRhiShaderResourceBindings *srb)

Assoziiert mit srb und beschreibt das Layout der Ressourcenbindung und die Ressourcen (QRhiBuffer, QRhiTexture) selbst. Letzteres ist optional, da nur das Layout bei der Erstellung der Pipeline von Bedeutung ist. Daher kann das hier übergebene srb die eigentlichen Puffer- oder Texturobjekte unspezifiziert lassen (nullptr), solange ein weiteres, layout-compatible QRhiShaderResourceBindings über setShaderResources() vor der Aufzeichnung der Zeichenaufrufe gebunden wird.

Siehe auch shaderResourceBindings().

void QRhiGraphicsPipeline::setShaderStages(std::initializer_list<QRhiShaderStage> list)

Legt die list von Shaderstufen fest.

template <typename InputIterator> void QRhiGraphicsPipeline::setShaderStages(InputIterator first, InputIterator last)

Setzt die Liste der Shaderstufen aus den Iteratoren first und last.

void QRhiGraphicsPipeline::setSlopeScaledDepthBias(float bias)

Legt die neigungsskalierte Tiefe bias fest. Der Standardwert ist 0.

Siehe auch slopeScaledDepthBias().

void QRhiGraphicsPipeline::setStencilBack(const QRhiGraphicsPipeline::StencilOpState &state)

Legt den Schablonentest state für Rückseiten fest.

Siehe auch stencilBack().

void QRhiGraphicsPipeline::setStencilFront(const QRhiGraphicsPipeline::StencilOpState &state)

Legt den Schablonentest state für Stirnseiten fest.

Siehe auch stencilFront().

void QRhiGraphicsPipeline::setStencilReadMask(quint32 mask)

Legt die Schablonenlesung mask fest. Der Standardwert ist 0xFF.

Siehe auch stencilReadMask().

void QRhiGraphicsPipeline::setStencilTest(bool enable)

Aktiviert oder deaktiviert die Schablonentests auf der Grundlage von enable. Standardmäßig ist dies deaktiviert.

Siehe auch hasStencilTest().

void QRhiGraphicsPipeline::setStencilWriteMask(quint32 mask)

Legt die Schablonenschreibweise mask fest. Der Standardwert ist 0xFF.

Siehe auch stencilWriteMask().

void QRhiGraphicsPipeline::setTargetBlends(std::initializer_list<QRhiGraphicsPipeline::TargetBlend> list)

Legt die list der Rendering-Ziel-Überblendungseinstellungen fest. Dies ist eine Liste, denn wenn mehrere Rendering-Ziele verwendet werden (d.h. ein QRhiTextureRenderTarget mit mehr als einem QRhiColorAttachment), muss es eine TargetBlend Struktur pro Rendering-Ziel geben (Farbanhang).

Standardmäßig gibt es einen standardmäßig erstellten TargetBlend Satz.

Siehe auch QRhi::MaxColorAttachments.

template <typename InputIterator> void QRhiGraphicsPipeline::setTargetBlends(InputIterator first, InputIterator last)

Legt die Liste der Renderzielüberblendungseinstellungen aus den Iteratoren first und last fest.

void QRhiGraphicsPipeline::setTopology(QRhiGraphicsPipeline::Topology t)

Legt die primitive Topologie t fest.

Siehe auch topology().

void QRhiGraphicsPipeline::setVertexInputLayout(const QRhiVertexInputLayout &layout)

Gibt die Scheitelpunkteingabe layout an.

Siehe auch vertexInputLayout().

QRhiShaderResourceBindings *QRhiGraphicsPipeline::shaderResourceBindings() const

Gibt das aktuell zugeordnete QRhiShaderResourceBindings Objekt zurück.

Siehe auch setShaderResourceBindings().

const QRhiShaderStage *QRhiGraphicsPipeline::shaderStageAt(qsizetype index) const

Gibt die Shader-Stufe auf der angegebenen index zurück.

qsizetype QRhiGraphicsPipeline::shaderStageCount() const

Gibt die Anzahl der Shaderstufen in dieser Pipeline zurück.

float QRhiGraphicsPipeline::slopeScaledDepthBias() const

Gibt die aktuell eingestellte neigungsskalierte Tiefenverzerrung zurück.

Siehe auch setSlopeScaledDepthBias().

QRhiGraphicsPipeline::StencilOpState QRhiGraphicsPipeline::stencilBack() const

Gibt den aktuellen Schablonenteststatus für Rückseiten zurück.

Siehe auch setStencilBack().

QRhiGraphicsPipeline::StencilOpState QRhiGraphicsPipeline::stencilFront() const

Gibt den aktuellen Schablonenteststatus für Vorderseiten zurück.

Siehe auch setStencilFront().

quint32 QRhiGraphicsPipeline::stencilReadMask() const

Gibt die aktuelle Schablonenlesemaske zurück.

Siehe auch setStencilReadMask().

quint32 QRhiGraphicsPipeline::stencilWriteMask() const

Gibt die aktuelle Schablonen-Schreibmaske zurück.

Siehe auch setStencilWriteMask().

const QRhiGraphicsPipeline::TargetBlend *QRhiGraphicsPipeline::targetBlendAt(qsizetype index) const

Gibt die Einstellung für die Rendering-Zielmischung unter der angegebenen index zurück.

qsizetype QRhiGraphicsPipeline::targetBlendCount() const

Gibt die Anzahl der Rendering-Zielüberblendungseinstellungen zurück.

QRhiGraphicsPipeline::Topology QRhiGraphicsPipeline::topology() const

Gibt die aktuell eingestellte primitive Topologie zurück.

Siehe auch setTopology().

QRhiVertexInputLayout QRhiGraphicsPipeline::vertexInputLayout() const

Gibt die aktuell eingestellte Spezifikation des Vertex-Eingabelayouts zurück.

Siehe auch setVertexInputLayout().

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