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
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 den Mischvorgang 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 Angabe 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
Gibt die Tiefen- oder Schablonenvergleichsfunktion an
Konstante | Wert | Beschreibung |
---|---|---|
QRhiGraphicsPipeline::Never | 0 | |
QRhiGraphicsPipeline::Less | 1 | (Voreinstellung für Tiefe) |
QRhiGraphicsPipeline::Equal | 2 | |
QRhiGraphicsPipeline::LessOrEqual | 3 | |
QRhiGraphicsPipeline::Greater | 4 | |
QRhiGraphicsPipeline::NotEqual | 5 | |
QRhiGraphicsPipeline::GreaterOrEqual | 6 | |
QRhiGraphicsPipeline::Always | 7 | (Standardwert für Schablone) |
enum QRhiGraphicsPipeline::CullMode
Gibt den Culling-Modus an
Konstante | Wert | Beschreibung |
---|---|---|
QRhiGraphicsPipeline::None | 0 | Kein Culling (Standard) |
QRhiGraphicsPipeline::Front | 1 | Vordere Flächen ausblenden |
QRhiGraphicsPipeline::Back | 2 | Rü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.
Konstante | Wert | Beschreibung |
---|---|---|
QRhiGraphicsPipeline::UsesBlendConstants | 1 << 0 | Zeigt an, dass eine Blend-Farbkonstante über QRhiCommandBuffer::setBlendConstants() gesetzt wird. |
QRhiGraphicsPipeline::UsesStencilRef | 1 << 1 | Zeigt an, dass ein Schablonenreferenzwert über QRhiCommandBuffer::setStencilRef() gesetzt wird. |
QRhiGraphicsPipeline::UsesScissor | 1 << 2 | Zeigt an, dass ein Scherenrechteck über QRhiCommandBuffer::setScissor() gesetzt wird. |
QRhiGraphicsPipeline::CompileShadersWithDebugInfo | 1 << 3 | Fordert 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
Konstante | Wert | Beschreibung |
---|---|---|
QRhiGraphicsPipeline::CCW | 0 | Gegen den Uhrzeigersinn (Standard) |
QRhiGraphicsPipeline::CW | 1 | Im 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.
Konstante | Wert | Beschreibung |
---|---|---|
QRhiGraphicsPipeline::Fill | 0 | Das Innere des Polygons wird gefüllt (Standard) |
QRhiGraphicsPipeline::Line | 1 | Die Ränder des Polygons werden als Liniensegmente gezeichnet. |
enum QRhiGraphicsPipeline::StencilOp
Gibt die Schablonenoperation an
Konstante | Wert | Beschreibung |
---|---|---|
QRhiGraphicsPipeline::StencilZero | 0 | |
QRhiGraphicsPipeline::Keep | 1 | (Voreinstellung) |
QRhiGraphicsPipeline::Replace | 2 | |
QRhiGraphicsPipeline::IncrementAndClamp | 3 | |
QRhiGraphicsPipeline::DecrementAndClamp | 4 | |
QRhiGraphicsPipeline::Invert | 5 | |
QRhiGraphicsPipeline::IncrementAndWrap | 6 | |
QRhiGraphicsPipeline::DecrementAndWrap | 7 |
enum QRhiGraphicsPipeline::Topology
Gibt die primitive Topologie an
Konstante | Wert | Beschreibung |
---|---|---|
QRhiGraphicsPipeline::Triangles | 0 | (Voreinstellung) |
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 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.