QRhiGraphicsPipeline Class
Ressource für den Status der Grafik-Pipeline. 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: | 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, UsesShadingRate, UsesIndirectDraws } |
| 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 |
(since 6.11) bool | hasDepthClamp() 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) |
(since 6.11) void | setDepthClamp(bool enable) |
| 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 |
Neu implementierte öffentliche Funktionen
| virtual QRhiResource::Type | resourceType() const override |
Ausführliche Beschreibung
Stellt eine Grafik-Pipeline dar. Was genau dies in der zugrunde liegenden nativen Grafik-API entspricht, variiert. Wo es ein Konzept von Pipeline-Objekten gibt, beispielsweise bei Vulkan, erstellt das „ QRhi “-Backend beim Aufruf von ` create()` ein solches Objekt. Andernorts, beispielsweise bei OpenGL, sammelt die `QRhiGraphicsPipeline` möglicherweise lediglich die verschiedenen Zustände, und die Hauptaufgabe von ` create()` besteht darin, das entsprechende Shader-Programm einzurichten, wobei die Überprüfung der angeforderten Zustände jedoch auf einen späteren Zeitpunkt verschoben wird.
Wie bei allen Unterklassen von ` QRhiResource ` gilt das zweistufige Initialisierungsmuster: Das Setzen von Werten über die Setter, zum Beispiel ` setDepthTest()`, wird erst nach dem Aufruf von ` create()` wirksam. Vermeiden Sie es, Werte zu ändern, sobald 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 erstellt. Folglich kann dies ein ressourcenintensiver und aufwendiger Vorgang sein. Erstellen Sie stattdessen lieber mehrere Pipelines mit unterschiedlichen Zuständen und rufen Sie ` switch between them ` auf, wenn Sie den Render-Durchlauf aufzeichnen.
Hinweis: Die Festlegung der Shader-Stufen ist zwingend erforderlich. Es muss mindestens eine Stufe vorhanden sein, und es muss eine Vertex-Stufe vorhanden sein.
Hinweis: Die Festlegung der Shader-Ressourcenbindungen ist zwingend erforderlich. Für das referenzierte „ QRhiShaderResourceBindings “ muss zum Zeitpunkt des Aufrufs von „ create()“ bereits „ create()“ aufgerufen worden sein. Die Verknüpfung mit einem „ QRhiShaderResourceBindings “, das keine Bindungen enthält, ist ebenfalls zulässig, solange kein Shader in irgendeiner Stufe Ressourcen erwartet. Die Verwendung eines „ QRhiShaderResourceBindings “-Objekts, das keine tatsächlichen Ressourcen angibt (d. h., die Puffer, Texturen usw. für die Bindungspunkte sind auf „ nullptr “ gesetzt), ist ebenfalls zulässig, solange ein „ layout-compatible “ QRhiShaderResourceBindings, das Ressourcen für alle Bindungen angibt, beim Aufzeichnen des Render-Passes über „ setShaderResources()“ festgelegt wird.
Hinweis: Die Festlegung des Render-Pass-Deskriptors ist zwingend erforderlich. Um einen „ QRhiRenderPassDescriptor “ zu erhalten, der an „ setRenderPassDescriptor()“ übergeben werden kann, verwenden Sie entweder „ QRhiTextureRenderTarget::newCompatibleRenderPassDescriptor()“ oder „ QRhiSwapChain::newCompatibleRenderPassDescriptor()“.
Hinweis: Die Festlegung des Vertex-Eingabelayouts ist obligatorisch.
Hinweis: „ sampleCount“ () ist standardmäßig auf 1 gesetzt und muss mit der Sample-Anzahl der Farb- und Tiefen-Stencil-Anhänge des Renderziels übereinstimmen.
Hinweis: Der Tiefentest, das Tiefenschreiben und der Stencil-Test sind standardmäßig deaktiviert. Der Face-Culling-Modus ist standardmäßig auf „kein Culling“ eingestellt.
Hinweis: „ stencilReadMask“ () und „ stencilWriteMask “ () gelten für beide Flächen. Beide sind standardmäßig auf 0xFF gesetzt.
Anwendungsbeispiel
Alle Einstellungen einer Grafikpipeline verfügen über Standardwerte, 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 an der Eingabeposition 0 einen einzelnen „ vec3 position “-Eingabewert entgegennimmt. Mit den Objekten „ QRhiShaderResourceBindings “ und „ QRhiRenderPassDescriptor “ sowie den Sammlungen „ QShader “ für die Vertex- und Fragment-Stufen 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. Beispielsweise wird eine „ Triangles “-Topologie verwendet, es findet kein Backface-Culling statt, das Blending ist deaktiviert, das Schreiben von Farben ist jedoch für alle vier Kanäle aktiviert, Tiefenprüfung und -schreiben sind deaktiviert, und Stencil-Operationen sind deaktiviert.
Hinweis: Hierbei handelt es sich um eine RHI-API mit eingeschränkten Kompatibilitätsgarantien; weitere Informationen finden Sie unter QRhi.
Siehe auch QRhiCommandBuffer und QRhi.
Dokumentation zu Mitgliedstypen
enum QRhiGraphicsPipeline::BlendFactor
Legt den Mischfaktor fest
| Konstante | Wert |
|---|---|
QRhiGraphicsPipeline::Zero | 0 |
QRhiGraphicsPipeline::One | 1 |
QRhiGraphicsPipeline::SrcColor | 2 |
QRhiGraphicsPipeline::OneMinusSrcColor | 3 |
QRhiGraphicsPipeline::DstColor | 4 |
QRhiGraphicsPipeline::OneMinusDstColor | 5 |
QRhiGraphicsPipeline::SrcAlpha | 6 |
QRhiGraphicsPipeline::OneMinusSrcAlpha | 7 |
QRhiGraphicsPipeline::DstAlpha | 8 |
QRhiGraphicsPipeline::OneMinusDstAlpha | 9 |
QRhiGraphicsPipeline::ConstantColor | 10 |
QRhiGraphicsPipeline::OneMinusConstantColor | 11 |
QRhiGraphicsPipeline::ConstantAlpha | 12 |
QRhiGraphicsPipeline::OneMinusConstantAlpha | 13 |
QRhiGraphicsPipeline::SrcAlphaSaturate | 14 |
QRhiGraphicsPipeline::Src1Color | 15 |
QRhiGraphicsPipeline::OneMinusSrc1Color | 16 |
QRhiGraphicsPipeline::Src1Alpha | 17 |
QRhiGraphicsPipeline::OneMinusSrc1Alpha | 18 |
enum QRhiGraphicsPipeline::BlendOp
Legt die Mischoperation fest
| Konstante | Wert |
|---|---|
QRhiGraphicsPipeline::Add | 0 |
QRhiGraphicsPipeline::Subtract | 1 |
QRhiGraphicsPipeline::ReverseSubtract | 2 |
QRhiGraphicsPipeline::Min | 3 |
QRhiGraphicsPipeline::Max | 4 |
enum QRhiGraphicsPipeline::ColorMaskComponent
flags QRhiGraphicsPipeline::ColorMask
Flag-Werte zur Festlegung der Farbschreibmaske
| Konstante | Wert |
|---|---|
QRhiGraphicsPipeline::R | 1 << 0 |
QRhiGraphicsPipeline::G | 1 << 1 |
QRhiGraphicsPipeline::B | 1 << 2 |
QRhiGraphicsPipeline::A | 1 << 3 |
Der Typ „ColorMask“ ist ein typedef für QFlags<ColorMaskComponent>. Er speichert eine ODER-Kombination von ColorMaskComponent-Werten.
enum QRhiGraphicsPipeline::CompareOp
Legt die Tiefen- oder Stencil-Vergleichsfunktion fest
| Konstante | Wert | Beschreibung |
|---|---|---|
QRhiGraphicsPipeline::Never | 0 | |
QRhiGraphicsPipeline::Less | 1 | (Standardwert für Tiefe) |
QRhiGraphicsPipeline::Equal | 2 | |
QRhiGraphicsPipeline::LessOrEqual | 3 | |
QRhiGraphicsPipeline::Greater | 4 | |
QRhiGraphicsPipeline::NotEqual | 5 | |
QRhiGraphicsPipeline::GreaterOrEqual | 6 | |
QRhiGraphicsPipeline::Always | 7 | (Standard für Schablone) |
enum QRhiGraphicsPipeline::CullMode
Legt den Culling-Modus fest
| Konstante | Wert | Beschreibung |
|---|---|---|
QRhiGraphicsPipeline::None | 0 | Kein Culling (Standard) |
QRhiGraphicsPipeline::Front | 1 | Vorderseiten ausblenden |
QRhiGraphicsPipeline::Back | 2 | Rückseiten ausblenden |
enum QRhiGraphicsPipeline::Flag
flags QRhiGraphicsPipeline::Flags
Flag-Werte zur Beschreibung des dynamischen Zustands der Pipeline sowie weitere Optionen. Der Ansichtsbereich ist stets dynamisch.
| Konstante | Wert | Beschreibung |
|---|---|---|
QRhiGraphicsPipeline::UsesBlendConstants | 1 << 0 | Gibt an, dass eine Mischfarbkonstante über ` QRhiCommandBuffer::setBlendConstants()` festgelegt wird |
QRhiGraphicsPipeline::UsesStencilRef | 1 << 1 | Gibt an, dass ein Stencil-Referenzwert über ` QRhiCommandBuffer::setStencilRef()` festgelegt wird |
QRhiGraphicsPipeline::UsesScissor | 1 << 2 | Gibt an, dass ein Scherenrechteck über ` QRhiCommandBuffer::setScissor()` festgelegt wird |
QRhiGraphicsPipeline::CompileShadersWithDebugInfo | 1 << 3 | Fordert die Kompilierung von Shadern mit aktivierten Debug-Informationen an. Dies ist nur relevant, wenn es um die Laufzeitkompilierung von Shadern aus Quellcode geht und nur dann, wenn die zugrunde liegende Infrastruktur dies unterstützt. Anhand konkreter Beispiele ist dies bei Vulkan und SPIR-V nicht relevant, da die Kompilierung von GLSL nach SPIR-V nicht zur Laufzeit erfolgt. Betrachten wir hingegen Direct3D und HLSL, wo es mehrere Optionen gibt: Wenn die „ QShader “-Pakete mit vorkompiliertem Bytecode ausgeliefert werden (DXBC), müssen Debug-Informationen über das Tool angefordert werden, das die Datei „ .qsb “ generiert – ähnlich wie bei Vulkan und SPIR-V. Befinden sich jedoch HLSL-Quellcode in den vor oder zur Laufzeit generierten „ QShader “-Paketen, erfolgt die erste Kompilierungsphase (HLSL-Quellcode in Zwischenformat) ebenfalls zur Laufzeit, wobei dieses Flag berücksichtigt wird. Debug-Informationen sind insbesondere bei Tools wie RenderDoc relevant, da sie es ermöglichen, den ursprünglichen Quellcode bei der Untersuchung der Pipeline sowie beim Debuggen von Vertex- oder Fragment-Shadern einzusehen. |
QRhiGraphicsPipeline::UsesShadingRate | 1 << 4 | Gibt an, dass ein Shading-Rate-Wert pro Zeichnungsvorgang (pro Pipeline) über ` QRhiCommandBuffer::setShadingRate()` festgelegt wird. Wird dieses Flag nicht angegeben und dennoch `setShadingRate()` aufgerufen, kann dies je nach der zugrunde liegenden Grafik-API zu unterschiedlichen, unerwarteten Ergebnissen führen. |
QRhiGraphicsPipeline::UsesIndirectDraws (since Qt 6.12) | 1 << 5 | Gibt an, dass diese Pipeline mit indirekten Zeichenaufrufen (QRhiCommandBuffer::drawIndirect() oder QRhiCommandBuffer::drawIndexedIndirect()) verwendet wird. Durch Setzen dieses Flags kann das Metal-Backend Indirect Command Buffers (ICB) für das GPU-gesteuerte Rendering nutzen, was den CPU-Overhead bei einer hohen Anzahl von Zeichenaufrufen erheblich reduziert. Das Nichtsetzen dieses Flags bei der Verwendung indirekter Zeichnungsaufrufe ist zwar weiterhin funktionsfähig, kann jedoch zu einer weniger optimalen Leistung unter Metal führen. Dieses Flag hat keine Auswirkungen auf andere Backends. |
Der Typ „Flags“ ist ein `typedef` für ` QFlags<Flag>`. Er speichert eine OR-Kombination von `Flag`-Werten.
enum QRhiGraphicsPipeline::FrontFace
Legt die Wicklungsreihenfolge der Vorderseite fest
| Konstante | Wert | Beschreibung |
|---|---|---|
QRhiGraphicsPipeline::CCW | 0 | Gegen den Uhrzeigersinn (Standard) |
QRhiGraphicsPipeline::CW | 1 | Im Uhrzeigersinn |
enum QRhiGraphicsPipeline::PolygonMode
Legt den Rasterisierungsmodus für Polygone fest
Der Polygonmodus (Triangle Fill Mode in Metal, Fill Mode in D3D) legt den Füllmodus fest, der bei der Rasterung von Polygonen verwendet wird. Polygone können als gefüllte Flächen (Fill) oder als Drahtgitter (Line) gezeichnet werden.
Die Unterstützung für Polygonmodi ohne Füllung ist optional und wird durch die Funktion „ QRhi::NonFillPolygonMode “ angegeben. Bei OpenGL ES und einigen Vulkan-Implementierungen wird diese Funktion wahrscheinlich als nicht unterstützt gemeldet, was bedeutet, dass andere Werte als „Fill“ nicht verwendet werden können.
| Konstante | Wert | Beschreibung |
|---|---|---|
QRhiGraphicsPipeline::Fill | 0 | Der Innenbereich des Polygons wird gefüllt (Standard) |
QRhiGraphicsPipeline::Line | 1 | Die Begrenzungskanten des Polygons werden als Liniensegmente gezeichnet. |
enum QRhiGraphicsPipeline::StencilOp
Legt die Stencil-Operation fest
| Konstante | Wert | Beschreibung |
|---|---|---|
QRhiGraphicsPipeline::StencilZero | 0 | |
QRhiGraphicsPipeline::Keep | 1 | (Standard) |
QRhiGraphicsPipeline::Replace | 2 | |
QRhiGraphicsPipeline::IncrementAndClamp | 3 | |
QRhiGraphicsPipeline::DecrementAndClamp | 4 | |
QRhiGraphicsPipeline::Invert | 5 | |
QRhiGraphicsPipeline::IncrementAndWrap | 6 | |
QRhiGraphicsPipeline::DecrementAndWrap | 7 |
enum QRhiGraphicsPipeline::Topology
Legt die Topologie der Primitive fest
| Konstante | Wert | Beschreibung |
|---|---|---|
QRhiGraphicsPipeline::Triangles | 0 | (Standard) |
QRhiGraphicsPipeline::TriangleStrip | 1 | |
QRhiGraphicsPipeline::TriangleFan | 2 | (nur verfügbar, wenn „ QRhi::TriangleFanTopology “ unterstützt wird) |
QRhiGraphicsPipeline::Lines | 3 | |
QRhiGraphicsPipeline::LineStrip | 4 | |
QRhiGraphicsPipeline::Points | 5 | |
QRhiGraphicsPipeline::Patches | 6 | (nur verfügbar, wenn „ QRhi::Tessellation “ unterstützt wird, und setzt voraus, dass die Tessellationsstufen in der Pipeline vorhanden sind) |
Dokumentation der Member-Funktionen
const QRhiShaderStage *QRhiGraphicsPipeline::cbeginShaderStages() const
Gibt einen const-Iterator zurück, der auf das erste Element in der Shader-Stage-Liste verweist.
const QRhiGraphicsPipeline::TargetBlend *QRhiGraphicsPipeline::cbeginTargetBlends() const
Gibt einen konstanten Iterator zurück, der auf das erste Element in der Liste der Blend-Einstellungen des Renderziels verweist.
const QRhiShaderStage *QRhiGraphicsPipeline::cendShaderStages() const
Gibt einen konstanten Iterator zurück, der direkt auf das Element nach dem letzten Element in der Shader-Stufenliste zeigt.
const QRhiGraphicsPipeline::TargetBlend *QRhiGraphicsPipeline::cendTargetBlends() const
Gibt einen konstanten Iterator zurück, der direkt auf das Element nach dem letzten Element in der Liste der Blend-Einstellungen für das Renderziel zeigt.
[pure virtual] bool QRhiGraphicsPipeline::create()
Erstellt die entsprechenden nativen Grafikressourcen. Falls aufgrund eines früheren Aufrufs von `create()` bereits Ressourcen vorhanden sind, für die noch kein entsprechender Aufruf von ` destroy()` erfolgt ist, wird zunächst implizit ` destroy()` aufgerufen.
Gibt bei Erfolg ` true ` zurück, bei einem fehlgeschlagenen Grafikvorgang ` false `. Unabhängig vom Rückgabewert ist der Aufruf von ` destroy()` stets sicher.
Hinweis: Dies kann je nach zugrunde liegender Grafik-API ein rechenintensiver Vorgang sein, insbesondere wenn Shader aus dem Quellcode oder aus einem zwischengeschalteten Bytecode-Format in den GPU-eigenen Befehlssatz kompiliert bzw. optimiert werden. Gegebenenfalls richtet das „ QRhi “-Backend automatisch die entsprechenden nicht-persistenten Funktionen ein, um dies zu beschleunigen; so erstellt beispielsweise das Vulkan-Backend automatisch ein „ VkPipelineCache “, um die Wiederverwendung von Daten während der Laufzeit der Anwendung zu verbessern.
Hinweis: Treiber können zudem verschiedene persistente (festplattenbasierte) Caching-Strategien für Shader- und Pipeline-Daten einsetzen, die für Qt nicht sichtbar sind und außerhalb der Kontrolle von Qt liegen. In einigen Fällen, abhängig von der Grafik-API und dem Backend „ QRhi “, gibt es innerhalb von „ QRhi “ Funktionen zur manuellen Verwaltung eines solchen Caches, die das Abrufen eines serialisierbaren Blobs ermöglichen, der dann bei zukünftigen Ausführungen der Anwendung erneut geladen werden kann, um schnellere Erstellungszeiten für die Pipeline zu gewährleisten. Weitere Informationen finden Sie unter QRhi::pipelineCacheData() und QRhi::setPipelineCacheData(). Beachten Sie außerdem, dass bei der Arbeit mit einer „ QRhi “-Instanz, die von einem übergeordneten Qt-Framework wie Qt Quick verwaltet wird, ein solches festplattenbasiertes Caching möglicherweise automatisch übernommen wird. So verwendet beispielsweise QQuickWindow standardmäßig einen festplattenbasierten Pipeline-Cache (zusätzlich zu jeglichem Caching auf Treiberebene).
QRhiGraphicsPipeline::CullMode QRhiGraphicsPipeline::cullMode() const
Gibt den aktuell eingestellten Face-Culling-Modus zurück.
Siehe auch „ setCullMode()“.
int QRhiGraphicsPipeline::depthBias() const
Gibt den aktuell eingestellten Tiefen-Bias 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 Front-Face-Modus zurück.
Siehe auch „ setFrontFace()“.
[since 6.11] bool QRhiGraphicsPipeline::hasDepthClamp() const
Gibt „true“ zurück, wenn die Tiefenbegrenzung aktiviert ist.
Diese Funktion wurde in Qt 6.11 eingeführt.
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 Stencil-Prüfung aktiviert ist.
float QRhiGraphicsPipeline::lineWidth() const
Gibt die aktuell eingestellte Linienbreite zurück. Der Standardwert 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 keine Mehrfachansicht gerendert wird.
Diese Funktion wurde in Qt 6.7 eingeführt.
Siehe auch ` setMultiViewCount()`.
int QRhiGraphicsPipeline::patchControlPointCount() const
Gibt die Anzahl der aktuell festgelegten 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
Implementiert neu: ` QRhiResource::resourceType()` const.
Gibt den Ressourcentyp zurück.
int QRhiGraphicsPipeline::sampleCount() const
Gibt die aktuell eingestellte Sample-Anzahl zurück. 1 bedeutet, dass kein Multisample-Antialiasing verwendet wird.
Siehe auch setSampleCount().
void QRhiGraphicsPipeline::setCullMode(QRhiGraphicsPipeline::CullMode mode)
Legt die angegebene Face-Culling- mode fest.
Siehe auch cullMode().
void QRhiGraphicsPipeline::setDepthBias(int bias)
Legt die Tiefe „ bias “ fest. Der Standardwert ist 0.
Siehe auch ` depthBias()`.
[since 6.11] void QRhiGraphicsPipeline::setDepthClamp(bool enable)
Aktiviert die Tiefenbegrenzung, wenn „ enable “ auf „true“ gesetzt ist. Wenn die Tiefenbegrenzung aktiviert ist, werden Primitive, die andernfalls von der nahen oder fernen Clip-Ebene abgeschnitten würden, gerastert und ihre Tiefenwerte auf den Tiefenbereich begrenzt. Ist diese Option deaktiviert (Standardeinstellung), werden solche Primitive abgeschnitten.
Hinweis: Diese Einstellung wird ignoriert, wenn die Funktion „ QRhi::DepthClamp “ als nicht unterstützt gemeldet wird.
Diese Funktion wurde in Qt 6.11 eingeführt.
Siehe auch „ hasDepthClamp()“.
void QRhiGraphicsPipeline::setDepthOp(QRhiGraphicsPipeline::CompareOp op)
Legt die Funktion für den Tiefenvergleich fest: op.
Siehe auch depthOp().
void QRhiGraphicsPipeline::setDepthTest(bool enable)
Aktiviert oder deaktiviert die Tiefenprüfung basierend auf enable. Sowohl die Tiefenprüfung als auch das Schreiben von 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 diese Option deaktiviert. Das Schreiben von Tiefendaten wird in der Regel zusammen mit dem Tiefentest aktiviert.
Hinweis: Das Aktivieren des Tiefenschreibens ohne aktivierten Tiefentest führt möglicherweise nicht zum gewünschten Ergebnis und sollte 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)
Legt den Modus für die Vorderseite fest: f.
Siehe auch frontFace().
void QRhiGraphicsPipeline::setLineWidth(float width)
Legt die Zeilen width fest. Wenn die Funktion „ QRhi::WideLines “ zur Laufzeit als nicht unterstützt gemeldet wird, werden Werte ungleich 1.0f ignoriert.
Siehe auch ` lineWidth()`.
[since 6.7] void QRhiGraphicsPipeline::setMultiViewCount(int count)
Legt den View- count -Wert für das Multiview-Rendering fest. Der Standardwert ist 0, was bedeutet, dass kein Multiview-Rendering stattfindet. „ count “ muss mindestens 2 betragen, um das Multiview-Rendering auszulösen.
Multiview ist nur verfügbar, wenn die „ MultiView feature “ als unterstützt gemeldet wird. Das Renderziel muss ein 2D-Textur-Array sein, und für den Farb-Attachment des Renderziels muss derselbe Wert für „ count “ festgelegt sein.
Weitere Details zum Multiview-Rendering finden Sie unter „ QRhiColorAttachment::setMultiViewCount()“.
Diese Funktion wurde in Qt 6.7 eingeführt.
Siehe auch multiViewCount(), QRhi::MultiView sowie QRhiColorAttachment::setMultiViewCount().
void QRhiGraphicsPipeline::setPatchControlPointCount(int count)
Legt die Anzahl der Patch-Kontrollpunkte auf „ count “ fest. Der Standardwert ist 3. Diese Einstellung wird nur verwendet, wenn die Topologie auf „ Patches “ gesetzt ist.
Siehe auch ` patchControlPointCount()`.
void QRhiGraphicsPipeline::setPolygonMode(QRhiGraphicsPipeline::PolygonMode mode)
Legt die Polygon mode fest. Die Standardeinstellung ist „Fill“.
Siehe auch „ polygonMode()“ und „ QRhi::NonFillPolygonMode “.
void QRhiGraphicsPipeline::setRenderPassDescriptor(QRhiRenderPassDescriptor *desc)
Verweist auf die angegebene QRhiRenderPassDescriptor desc .
Siehe auch renderPassDescriptor().
void QRhiGraphicsPipeline::setSampleCount(int s)
Legt die Anzahl der Samples fest. Typische Werte für „ s “ sind 1, 4 oder 8. Die Pipeline muss stets mit dem Renderziel kompatibel sein, d. h., die Anzahl der Samples muss übereinstimmen.
Siehe auch „ sampleCount()“ und „ QRhi::supportedSampleCounts()“.
void QRhiGraphicsPipeline::setShaderResourceBindings(QRhiShaderResourceBindings *srb)
Wird mit ` srb ` verknüpft, das das Layout der Ressourcenbindung sowie die Ressourcen (QRhiBuffer, QRhiTexture) selbst beschreibt. Letzteres ist optional, da bei der Erstellung der Pipeline nur das Layout von Bedeutung ist. Daher kann das hier übergebene ` srb ` die tatsächlichen Puffer- oder Texturobjekte unbestimmt lassen (nullptr), solange ein anderes, ` layout-compatible ` QRhiShaderResourceBindings, vor der Aufzeichnung der Draw-Calls über ` setShaderResources()` gebunden wurde.
Siehe auch shaderResourceBindings().
void QRhiGraphicsPipeline::setShaderStages(std::initializer_list<QRhiShaderStage> list)
Legt die „ list “ der Shader-Stufen fest.
template <typename InputIterator> void QRhiGraphicsPipeline::setShaderStages(InputIterator first, InputIterator last)
Legt die Liste der Shader-Stufen anhand der Iteratoren „ first “ und „ last “ fest.
void QRhiGraphicsPipeline::setSlopeScaledDepthBias(float bias)
Legt die skalierte Tiefen bias, der Steigung fest. Der Standardwert ist 0.
Siehe auch slopeScaledDepthBias().
void QRhiGraphicsPipeline::setStencilBack(const QRhiGraphicsPipeline::StencilOpState &state)
Legt die Stencil-Test- state en für Rückseiten fest.
Siehe auch ` stencilBack()`.
void QRhiGraphicsPipeline::setStencilFront(const QRhiGraphicsPipeline::StencilOpState &state)
Legt die Stencil-Test- state en für die Vorderseiten fest.
Siehe auch ` stencilFront()`.
void QRhiGraphicsPipeline::setStencilReadMask(quint32 mask)
Legt das Lese- mask s der Schablone fest. Der Standardwert ist 0xFF.
Siehe auch ` stencilReadMask()`.
void QRhiGraphicsPipeline::setStencilTest(bool enable)
Aktiviert oder deaktiviert Stencil-Tests basierend auf enable. Standardmäßig ist diese Option deaktiviert.
Siehe auch hasStencilTest().
void QRhiGraphicsPipeline::setStencilWriteMask(quint32 mask)
Legt den Stencil-Schreib mask fest. Der Standardwert ist 0xFF.
Siehe auch ` stencilWriteMask()`.
void QRhiGraphicsPipeline::setTargetBlends(std::initializer_list<QRhiGraphicsPipeline::TargetBlend> list)
Legt die „ list “ der Einstellungen für die Überblendung von Renderzielen fest. Hierbei handelt es sich um eine Liste, da bei Verwendung mehrerer Renderziele (d. h. eines „ QRhiTextureRenderTarget “ mit mehr als einer „ QRhiColorAttachment “) pro Renderziel (Farb-Attachment) eine „ TargetBlend “-Struktur vorhanden sein muss.
Standardmäßig ist ein standardmäßig erstelltes „ TargetBlend “-Set vorhanden.
Siehe auch „ QRhi::MaxColorAttachments “.
template <typename InputIterator> void QRhiGraphicsPipeline::setTargetBlends(InputIterator first, InputIterator last)
Legt die Liste der Blend-Einstellungen für das Renderziel anhand der Iteratoren first und last fest.
void QRhiGraphicsPipeline::setTopology(QRhiGraphicsPipeline::Topology t)
Legt die Topologie der Primitive fest: t.
Siehe auch topology().
void QRhiGraphicsPipeline::setVertexInputLayout(const QRhiVertexInputLayout &layout)
Legt die Scheitelpunkt-Eingabe layout fest.
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 an der angegebenen Adresse „ index “ zurück.
qsizetype QRhiGraphicsPipeline::shaderStageCount() const
Gibt die Anzahl der Shader-Stufen in dieser Pipeline zurück.
float QRhiGraphicsPipeline::slopeScaledDepthBias() const
Gibt den aktuell eingestellten, steigungsskalierten Tiefen-Bias zurück.
Siehe auch ` setSlopeScaledDepthBias()`.
QRhiGraphicsPipeline::StencilOpState QRhiGraphicsPipeline::stencilBack() const
Gibt den aktuellen Stencil-Test-Status für Rückseiten zurück.
Siehe auch „ setStencilBack()“.
QRhiGraphicsPipeline::StencilOpState QRhiGraphicsPipeline::stencilFront() const
Gibt den aktuellen Stencil-Test-Status für Vorderseiten zurück.
Siehe auch „ setStencilFront()“.
quint32 QRhiGraphicsPipeline::stencilReadMask() const
Gibt die aktuelle Lese-Maske für die Schablone zurück.
Siehe auch „ setStencilReadMask()“.
quint32 QRhiGraphicsPipeline::stencilWriteMask() const
Gibt die aktuelle Stencil-Schreibmaske zurück.
Siehe auch „ setStencilWriteMask()“.
const QRhiGraphicsPipeline::TargetBlend *QRhiGraphicsPipeline::targetBlendAt(qsizetype index) const
Gibt die Blend-Einstellung des Renderziels an der angegebenen Koordinate ` index` zurück.
qsizetype QRhiGraphicsPipeline::targetBlendCount() const
Gibt die Anzahl der Blend-Einstellungen für das Renderziel zurück.
QRhiGraphicsPipeline::Topology QRhiGraphicsPipeline::topology() const
Gibt die aktuell festgelegte primitive Topologie zurück.
Siehe auch „ setTopology()“.
QRhiVertexInputLayout QRhiGraphicsPipeline::vertexInputLayout() const
Gibt die aktuell festgelegte Spezifikation für das Vertex-Eingabelayout zurück.
Siehe auch „ setVertexInputLayout()“.
© 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.