Sur cette page

QRhiGraphicsPipeline Class

Ressource d'état du pipeline graphique. En savoir plus...

En-tête : #include <rhi/qrhi.h>
CMake : find_package(Qt6 REQUIRED COMPONENTS GuiPrivate)
target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate)
qmake : QT += gui-private
Depuis : Qt 6.6
Hérite de : QRhiResource

Types publics

(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 }

Fonctions publiques

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

Fonctions publiques réimplémentées

virtual QRhiResource::Type resourceType() const override

Description détaillée

Représente un pipeline graphique. La manière dont cela se traduit exactement dans l’API graphique native sous-jacente varie. Lorsqu’il existe un concept d’objets de pipeline, par exemple avec Vulkan, le backend QRhi créera un tel objet lors de l’appel de create(). Ailleurs, par exemple avec OpenGL, QRhiGraphicsPipeline peut se contenter de collecter les différents états, et la tâche principale de la fonction create() consiste à configurer le programme de shader correspondant, tout en reportant à un moment ultérieur l’examen des états demandés.

Comme pour toutes les sous-classes de ` QRhiResource `, le modèle d’initialisation en deux phases s’applique : la définition de valeurs via les accesseurs, par exemple ` setDepthTest()`, ne prend effet qu’après l’appel de ` create()`. Évitez de modifier des valeurs une fois que le `QRhiGraphicsPipeline` a été initialisé via ` create()`. Pour modifier un état, définissez la nouvelle valeur et appelez à nouveau ` create()`. Cependant, cela libérera effectivement toutes les ressources natives sous-jacentes et en créera de nouvelles. Par conséquent, cela peut s’avérer être une opération lourde et coûteuse. Préférez plutôt créer plusieurs pipelines avec des états différents, puis appeler ` switch between them ` lors de l’enregistrement du passage de rendu.

Remarque : la configuration des étapes de shader est obligatoire. Il doit y avoir au moins une étape, et il doit y avoir une étape de sommets.

Remarque : la configuration des liaisons de ressources de shader est obligatoire. L’ QRhiShaderResourceBindings e référencée doit déjà avoir fait l’objet d’un appel à ` create()` au moment où ` create()` est appelé. L’association à un ` QRhiShaderResourceBindings ` ne comportant aucune liaison est également valide, à condition qu’aucun shader, à aucun étage, n’attende de ressources. L’utilisation d’un objet ` QRhiShaderResourceBindings ` qui ne spécifie aucune ressource réelle (c’est-à-dire que les tampons, textures, etc. pour les points de liaison sont définis sur ` nullptr`) est également valide, à condition qu’un ` layout-compatible ` QRhiShaderResourceBindings, qui spécifie les ressources pour toutes les liaisons, soit défini via ` setShaderResources()` lors de l’enregistrement du passage de rendu.

Remarque : la définition du descripteur de passe de rendu est obligatoire. Pour obtenir un QRhiRenderPassDescriptor pouvant être transmis à setRenderPassDescriptor(), utilisez soit QRhiTextureRenderTarget::newCompatibleRenderPassDescriptor(), soit QRhiSwapChain::newCompatibleRenderPassDescriptor().

Remarque : la configuration de la disposition des entrées de sommets est obligatoire.

Remarque : la valeur par défaut de` sampleCount()` est 1 et doit correspondre au nombre d’échantillons des annexes de couleur et de stencil de profondeur de la cible de rendu.

Remarque : le test de profondeur, l'écriture de profondeur et le test de stencil sont désactivés par défaut. Le mode de culling des faces est par défaut « sans culling ».

Remarque : les paramètres ` stencilReadMask()` et ` stencilWriteMask()` s’appliquent aux deux faces. Leur valeur par défaut est 0xFF.

Exemple d’utilisation

Tous les paramètres d’un pipeline graphique ont des valeurs par défaut qui peuvent convenir à de nombreuses applications. Par conséquent, un exemple minimal de création d’un pipeline graphique pourrait être le suivant. Cela suppose que le shader de sommets prenne une seule entrée « vec3 position » à l’emplacement d’entrée 0. À l’aide des objets « QRhiShaderResourceBindings » et « QRhiRenderPassDescriptor », ainsi que des collections « QShader » pour les étapes de sommets et de fragments, un pipeline pourrait être créé comme suit :

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(); }

Le code ci-dessus crée un objet pipeline qui utilise les valeurs par défaut pour de nombreux paramètres et états. Par exemple, il utilisera une topologie de type « Triangles », sans culling des faces arrière ; le mélange sera désactivé, mais l’écriture de couleur sera activée pour les quatre canaux ; les tests et écritures de profondeur seront désactivés, tout comme les opérations de stencil.

Remarque : il s'agit d'une API RHI dont la compatibilité n'est pas entièrement garantie ; consultez QRhi pour plus de détails.

Voir également QRhiCommandBuffer et QRhi.

Documentation sur les types de membres

enum QRhiGraphicsPipeline::BlendFactor

Définit le facteur de mélange

ConstanteValeur
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

Spécifie l'opération de fusion

ConstanteValeur
QRhiGraphicsPipeline::Add0
QRhiGraphicsPipeline::Subtract1
QRhiGraphicsPipeline::ReverseSubtract2
QRhiGraphicsPipeline::Min3
QRhiGraphicsPipeline::Max4

enum QRhiGraphicsPipeline::ColorMaskComponent
flags QRhiGraphicsPipeline::ColorMask

Valeurs des indicateurs permettant de définir le masque d'écriture des couleurs

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

Le type ColorMask est une définition de type (typedef) pour QFlags<ColorMaskComponent>. Il stocke une combinaison (ou) de valeurs ColorMaskComponent.

enum QRhiGraphicsPipeline::CompareOp

Spécifie la fonction de comparaison de profondeur ou de stencil

ConstanteValeurDescription
QRhiGraphicsPipeline::Never0 
QRhiGraphicsPipeline::Less1(valeur par défaut pour la profondeur)
QRhiGraphicsPipeline::Equal2 
QRhiGraphicsPipeline::LessOrEqual3 
QRhiGraphicsPipeline::Greater4 
QRhiGraphicsPipeline::NotEqual5 
QRhiGraphicsPipeline::GreaterOrEqual6 
QRhiGraphicsPipeline::Always7(valeur par défaut pour le pochoir)

enum QRhiGraphicsPipeline::CullMode

Spécifie le mode de culling

ConstanteValeurDescription
QRhiGraphicsPipeline::None0Pas de culling (par défaut)
QRhiGraphicsPipeline::Front1Éliminer les faces avant
QRhiGraphicsPipeline::Back2Éliminer les faces arrière

enum QRhiGraphicsPipeline::Flag
flags QRhiGraphicsPipeline::Flags

Paramètres permettant de décrire l'état dynamique du pipeline, ainsi que d'autres options. La fenêtre d'affichage est toujours dynamique.

ConstanteValeurDescription
QRhiGraphicsPipeline::UsesBlendConstants1 << 0Indique qu’une constante de couleur de mélange sera définie via QRhiCommandBuffer::setBlendConstants()
QRhiGraphicsPipeline::UsesStencilRef1 << 1Indique qu’une valeur de référence de stencil sera définie via QRhiCommandBuffer::setStencilRef()
QRhiGraphicsPipeline::UsesScissor1 << 2Indique qu'un rectangle de ciseaux sera défini via QRhiCommandBuffer::setScissor()
QRhiGraphicsPipeline::CompileShadersWithDebugInfo1 << 3Demande la compilation des shaders avec les informations de débogage activées. Cela n’est pertinent que dans le cas d’une compilation de shaders à l’exécution à partir du code source, et uniquement si l’infrastructure sous-jacente le prend en charge. Concrètement, cela ne s’applique pas à Vulkan et SPIR-V, car la compilation GLSL vers SPIR-V ne s’effectue pas à l’exécution. En revanche, prenons l’exemple de Direct3D et HLSL, où plusieurs options sont possibles : lorsque les paquets « QShader » sont fournis avec du bytecode précompilé (DXBC), les informations de débogage doivent être demandées via l’outil qui génère le fichier « .qsb », de la même manière que pour Vulkan et SPIR-V. Cependant, lorsque le code source HLSL est présent dans les paquets « QShader » générés à l’avance ou au moment de l’exécution, la première phase de compilation (du code source HLSL vers le format intermédiaire) s’effectue également au moment de l’exécution, en tenant compte de cet indicateur. Les informations de débogage sont particulièrement utiles avec des outils tels que RenderDoc, car elles permettent de visualiser le code source d’origine lors de l’analyse du pipeline et lors du débogage des shaders de sommets ou de fragments.
QRhiGraphicsPipeline::UsesShadingRate1 << 4Indique qu’une valeur de taux de shading par dessin (par pipeline) sera définie via ` QRhiCommandBuffer::setShadingRate()`. Ne pas spécifier cet indicateur tout en appelant `setShadingRate()` peut entraîner des résultats variables et inattendus selon l’API graphique sous-jacente.
QRhiGraphicsPipeline::UsesIndirectDraws (since Qt 6.12)1 << 5Indique que ce pipeline sera utilisé avec des appels de dessin indirects (QRhiCommandBuffer::drawIndirect() ou QRhiCommandBuffer::drawIndexedIndirect()). L’activation de cet indicateur permet au backend Metal d’utiliser des tampons de commande indirects (ICB) pour le rendu piloté par le GPU, ce qui réduit considérablement la charge du CPU en cas de grand nombre de dessins. Ne pas définir cet indicateur lors de l'utilisation de dessins indirects reste fonctionnel, mais peut entraîner des performances moins optimales sur Metal. Cet indicateur n'a aucun effet sur les autres backends.

Le type Flags est une définition de type (typedef) pour QFlags<Flag>. Il stocke une combinaison OR de valeurs de drapeau.

enum QRhiGraphicsPipeline::FrontFace

Spécifie l'ordre d'enroulement de la face avant

ConstanteValeurDescription
QRhiGraphicsPipeline::CCW0Dans le sens inverse des aiguilles d'une montre (par défaut)
QRhiGraphicsPipeline::CW1Dans le sens des aiguilles d'une montre

enum QRhiGraphicsPipeline::PolygonMode

Définit le mode de rastérisation des polygones

Le mode polygonal (mode de remplissage des triangles dans Metal, mode de remplissage dans D3D) spécifie le mode de remplissage utilisé lors de la rastérisation des polygones. Les polygones peuvent être dessinés sous forme de solides (Fill) ou de fil de fer (Line).

La prise en charge des modes de polygones sans remplissage est facultative et est indiquée par la fonctionnalité « QRhi::NonFillPolygonMode ». Avec OpenGL ES et certaines implémentations de Vulkan, cette fonctionnalité sera probablement signalée comme non prise en charge, ce qui signifie alors que les valeurs autres que «Fill» ne peuvent pas être utilisées.

ConstanteValeurDescription
QRhiGraphicsPipeline::Fill0L'intérieur du polygone est rempli (par défaut)
QRhiGraphicsPipeline::Line1Les arêtes du périmètre du polygone sont dessinées sous forme de segments de droite.

enum QRhiGraphicsPipeline::StencilOp

Spécifie l'opération de pochoir

ConstanteValeurDescription
QRhiGraphicsPipeline::StencilZero0 
QRhiGraphicsPipeline::Keep1(par défaut)
QRhiGraphicsPipeline::Replace2 
QRhiGraphicsPipeline::IncrementAndClamp3 
QRhiGraphicsPipeline::DecrementAndClamp4 
QRhiGraphicsPipeline::Invert5 
QRhiGraphicsPipeline::IncrementAndWrap6 
QRhiGraphicsPipeline::DecrementAndWrap7 

enum QRhiGraphicsPipeline::Topology

Spécifie la topologie primitive

ConstanteValeurDescription
QRhiGraphicsPipeline::Triangles0(par défaut)
QRhiGraphicsPipeline::TriangleStrip1 
QRhiGraphicsPipeline::TriangleFan2(disponible uniquement si la fonction « QRhi::TriangleFanTopology » est prise en charge)
QRhiGraphicsPipeline::Lines3 
QRhiGraphicsPipeline::LineStrip4 
QRhiGraphicsPipeline::Points5 
QRhiGraphicsPipeline::Patches6(disponible uniquement si la fonction « QRhi::Tessellation » est prise en charge, et nécessite la présence d'étapes de tessellation dans le pipeline)

Documentation des fonctions membres

const QRhiShaderStage *QRhiGraphicsPipeline::cbeginShaderStages() const

Renvoie un itérateur `const` pointant vers le premier élément de la liste des étapes de shader.

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

Renvoie un itérateur constant pointant vers le premier élément de la liste des paramètres de fusion de la cible de rendu.

const QRhiShaderStage *QRhiGraphicsPipeline::cendShaderStages() const

Renvoie un itérateur constant pointant juste après le dernier élément de la liste des étapes de shader.

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

Renvoie un itérateur const pointant juste après le dernier élément de la liste des paramètres de fusion de la cible de rendu.

[pure virtual] bool QRhiGraphicsPipeline::create()

Crée les ressources graphiques natives correspondantes. Si des ressources existent déjà à la suite d’un appel antérieur à `create()` sans ` destroy()` correspondant, alors la fonction ` destroy()` est d’abord appelée implicitement.

Renvoie ` true ` en cas de réussite, et ` false ` lorsqu’une opération graphique a échoué. Quelle que soit la valeur renvoyée, l’appel à ` destroy()` est toujours sans risque.

Remarque : selon l’API graphique sous-jacente,cette opération peut s’avérer coûteuse, en particulier lorsque les shaders sont compilés/optimisés à partir du code source ou d’un format de bytecode intermédiaire vers le jeu d’instructions propre au GPU. Le cas échéant, le backend QRhi configure automatiquement les mécanismes non persistants appropriés pour accélérer ce processus ; par exemple, le backend Vulkan crée automatiquement un VkPipelineCache pour améliorer la réutilisation des données pendant la durée de vie de l’application.

Remarque : les pilotes peuvent également recourir à diverses stratégies de mise en cache persistante (sur disque) pour les données de shaders et de pipeline, ce qui est invisible pour Qt et échappe à son contrôle. Dans certains cas, en fonction de l’API graphique et du backend d’ QRhi, l’ QRhi propose des fonctionnalités permettant de gérer manuellement ce cache, ce qui permet de récupérer un blob sérialisable pouvant ensuite être rechargé lors des exécutions ultérieures de l’application afin de garantir des temps de création de pipeline plus courts. Voir QRhi::pipelineCacheData() et QRhi::setPipelineCacheData() pour plus de détails. Notez également que lorsque vous travaillez avec une instance QRhi gérée par un framework Qt de niveau supérieur, tel que Qt Quick, il est possible que cette mise en cache sur disque soit gérée automatiquement ; par exemple, QQuickWindow utilise par défaut un cache de pipeline sur disque (qui s’ajoute à toute mise en cache au niveau du pilote).

QRhiGraphicsPipeline::CullMode QRhiGraphicsPipeline::cullMode() const

Renvoie le mode de culling des faces actuellement défini.

Voir aussi setCullMode().

int QRhiGraphicsPipeline::depthBias() const

Renvoie la correction de profondeur actuellement définie.

Voir également setDepthBias().

QRhiGraphicsPipeline::CompareOp QRhiGraphicsPipeline::depthOp() const

Renvoie la fonction de comparaison de profondeur.

Voir également setDepthOp().

QRhiGraphicsPipeline::Flags QRhiGraphicsPipeline::flags() const

Renvoie les indicateurs actuellement activés.

Voir aussi setFlags().

QRhiGraphicsPipeline::FrontFace QRhiGraphicsPipeline::frontFace() const

Renvoie le mode de face avant actuellement défini.

Voir aussi setFrontFace().

[since 6.11] bool QRhiGraphicsPipeline::hasDepthClamp() const

Renvoie « true » si le plafonnement de profondeur est activé.

Cette fonction a été introduite dans Qt 6.11.

bool QRhiGraphicsPipeline::hasDepthTest() const

Renvoie « true » si le test de profondeur est activé.

bool QRhiGraphicsPipeline::hasDepthWrite() const

Renvoie « true » si l'écriture en profondeur est activée.

bool QRhiGraphicsPipeline::hasStencilTest() const

Renvoie « true » si le test de stencil est activé.

float QRhiGraphicsPipeline::lineWidth() const

Renvoie la largeur de ligne actuellement définie. La valeur par défaut est 1,0f.

Voir également setLineWidth().

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

Renvoie le nombre de vues. La valeur par défaut est 0, ce qui indique qu'il n'y a pas de rendu multivue.

Cette fonction a été introduite dans Qt 6.7.

Voir également ` setMultiViewCount()`.

int QRhiGraphicsPipeline::patchControlPointCount() const

Renvoie le nombre de points de contrôle de patch actuellement défini.

Voir également setPatchControlPointCount().

QRhiGraphicsPipeline::PolygonMode QRhiGraphicsPipeline::polygonMode() const

Renvoie le mode polygonal.

Voir aussi setPolygonMode().

QRhiRenderPassDescriptor *QRhiGraphicsPipeline::renderPassDescriptor() const

Renvoie l'QRhiRenderPassDescriptor actuellement définie.

Voir aussi setRenderPassDescriptor().

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

Réimplémente : ` QRhiResource::resourceType()` const.

Renvoie le type de ressource.

int QRhiGraphicsPipeline::sampleCount() const

Renvoie le nombre d'échantillons actuellement défini. La valeur 1 signifie qu'il n'y a pas d'anticrénelage par suréchantillonnage.

Voir également setSampleCount().

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

Définit l'mode de culling des faces spécifiée.

Voir également cullMode().

void QRhiGraphicsPipeline::setDepthBias(int bias)

Définit la profondeur bias. La valeur par défaut est 0.

Voir aussi depthBias().

[since 6.11] void QRhiGraphicsPipeline::setDepthClamp(bool enable)

Active le « depth clamping » lorsque la valeur de enable est « true ». Lorsque le « depth clamping » est activé, les primitives qui seraient normalement rognées par le plan de rognage proche ou lointain sont rastérisées et leurs valeurs de profondeur sont limitées à la plage de profondeur définie. Lorsqu’il est désactivé (valeur par défaut), ces primitives sont rognées.

Remarque : ce paramètre est ignoré lorsque la fonctionnalité « QRhi::DepthClamp » est signalée comme non prise en charge.

Cette fonction a été introduite dans Qt 6.11.

Voir aussi hasDepthClamp().

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

Définit la fonction de comparaison de profondeur op.

Voir également depthOp().

void QRhiGraphicsPipeline::setDepthTest(bool enable)

Active ou désactive la vérification de la profondeur en fonction de enable. Par défaut, la vérification de la profondeur et l'écriture des données de profondeur sont désactivées.

Voir également hasDepthTest() et setDepthWrite().

void QRhiGraphicsPipeline::setDepthWrite(bool enable)

Contrôle l'écriture des données de profondeur dans le tampon de profondeur en fonction de enable. Par défaut, cette option est désactivée. L'écriture de profondeur est généralement activée en même temps que le test de profondeur.

Remarque : l'activation de l'écriture de profondeur sans que le test de profondeur soit activé peut ne pas donner le résultat escompté et doit être évitée.

Voir également hasDepthWrite() et setDepthTest().

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

Définit les indicateurs « f ».

Voir également flags().

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

Définit le mode de la face avant f.

Voir également frontFace().

void QRhiGraphicsPipeline::setLineWidth(float width)

Définit l'width de ligne. Si la fonctionnalité « QRhi::WideLines » est signalée comme non prise en charge lors de l'exécution, les valeurs autres que 1.0f sont ignorées.

Voir également ` lineWidth()`.

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

Définit l'count de la vue pour le rendu multivue. La valeur par défaut est 0, ce qui indique qu'il n'y a pas de rendu multivue. La valeur de « count » doit être égale ou supérieure à 2 pour activer le rendu multivue.

Le rendu multi-vue n'est disponible que lorsque l'MultiView feature est signalée comme prise en charge. La cible de rendu doit être un tableau de textures 2D, et l'attachement de couleur associé à cette cible doit avoir la même valeur définie pour ` count `.

Voir QRhiColorAttachment::setMultiViewCount() pour plus de détails sur le rendu multivue.

Cette fonction a été introduite dans Qt 6.7.

Voir également multiViewCount(), QRhi::MultiView et QRhiColorAttachment::setMultiViewCount().

void QRhiGraphicsPipeline::setPatchControlPointCount(int count)

Définit le nombre de points de contrôle du patch sur count. La valeur par défaut est 3. Ce paramètre n'est utilisé que lorsque la topologie est définie sur Patches.

Voir également patchControlPointCount().

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

Définit l'mode du polygone. La valeur par défaut est « Fill ».

Voir également polygonMode() et QRhi::NonFillPolygonMode.

void QRhiGraphicsPipeline::setRenderPassDescriptor(QRhiRenderPassDescriptor *desc)

Renvoie l'QRhiRenderPassDescriptor spécifiée desc.

Voir également renderPassDescriptor().

void QRhiGraphicsPipeline::setSampleCount(int s)

Définit le nombre d'échantillons. Les valeurs courantes pour « s » sont 1, 4 ou 8. Le pipeline doit toujours être compatible avec la cible de rendu, c'est-à-dire que le nombre d'échantillons doit correspondre.

Voir également sampleCount() et QRhi::supportedSampleCounts().

void QRhiGraphicsPipeline::setShaderResourceBindings(QRhiShaderResourceBindings *srb)

Associé à ` srb `, qui décrit la disposition des liaisons de ressources et les ressources elles-mêmes (QRhiBuffer, QRhiTexture). Ce dernier élément est facultatif, car seule la disposition importe lors de la création du pipeline. Par conséquent, l’ srb transmis ici peut ne pas spécifier les objets de tampon ou de texture réels (nullptr), à condition qu’il existe un autre ` layout-compatible ` QRhiShaderResourceBindings lié via ` setShaderResources()` avant l’enregistrement des appels de dessin.

Voir également shaderResourceBindings().

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

Définit l'list e des étapes de shader.

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

Définit la liste des étapes de shader à partir des itérateurs first et last.

void QRhiGraphicsPipeline::setSlopeScaledDepthBias(float bias)

Définit la profondeur mise à l'échelle en fonction de la pente bias. La valeur par défaut est 0.

Voir également slopeScaledDepthBias().

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

Définit l’ state de test de stencil pour les faces arrière.

Voir aussi stencilBack().

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

Définit l'state de test de pochoir pour les faces avant.

Voir aussi stencilFront().

void QRhiGraphicsPipeline::setStencilReadMask(quint32 mask)

Définit l'mask de lecture du pochoir. La valeur par défaut est 0xFF.

Voir également stencilReadMask().

void QRhiGraphicsPipeline::setStencilTest(bool enable)

Active ou désactive les tests de stencil en fonction de enable. Par défaut, cette option est désactivée.

Voir également hasStencilTest().

void QRhiGraphicsPipeline::setStencilWriteMask(quint32 mask)

Définit l'mask d'écriture du pochoir. La valeur par défaut est 0xFF.

Voir également la fonction stencilWriteMask().

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

Définit l'list des paramètres de fusion des cibles de rendu. Il s'agit d'une liste car, lorsque plusieurs cibles de rendu sont utilisées (c'est-à-dire une « QRhiTextureRenderTarget » comportant plusieurs « QRhiColorAttachment »), il doit y avoir une structure « TargetBlend » par cible de rendu (attachement de couleur).

Par défaut, il existe un ensemble TargetBlend construit par défaut.

Voir également QRhi::MaxColorAttachments.

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

Définit la liste des paramètres de fusion de la cible de rendu à partir des itérateurs first et last.

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

Définit la topologie de la primitive t.

Voir également topology().

void QRhiGraphicsPipeline::setVertexInputLayout(const QRhiVertexInputLayout &layout)

Spécifie l'layout d'entrée des sommets.

Voir également vertexInputLayout().

QRhiShaderResourceBindings *QRhiGraphicsPipeline::shaderResourceBindings() const

Renvoie l'objet ` QRhiShaderResourceBindings ` actuellement associé.

Voir aussi setShaderResourceBindings().

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

Renvoie l'étape de shader à l'index spécifiée.

qsizetype QRhiGraphicsPipeline::shaderStageCount() const

Renvoie le nombre d'étapes de shader dans ce pipeline.

float QRhiGraphicsPipeline::slopeScaledDepthBias() const

Renvoie le biais de profondeur mis à l'échelle de la pente actuellement défini.

Voir également setSlopeScaledDepthBias().

QRhiGraphicsPipeline::StencilOpState QRhiGraphicsPipeline::stencilBack() const

Renvoie l'état actuel du test de stencil pour les faces arrière.

Voir également setStencilBack().

QRhiGraphicsPipeline::StencilOpState QRhiGraphicsPipeline::stencilFront() const

Renvoie l'état actuel du test de stencil pour les faces avant.

Voir également setStencilFront().

quint32 QRhiGraphicsPipeline::stencilReadMask() const

Renvoie le masque de lecture de stencil actuel.

Voir aussi setStencilReadMask().

quint32 QRhiGraphicsPipeline::stencilWriteMask() const

Renvoie le masque d'écriture stencil actuel.

Voir également setStencilWriteMask().

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

Renvoie le paramètre de fusion de la cible de rendu à l'index spécifiée.

qsizetype QRhiGraphicsPipeline::targetBlendCount() const

Renvoie le nombre de paramètres de fusion de la cible de rendu.

QRhiGraphicsPipeline::Topology QRhiGraphicsPipeline::topology() const

Renvoie la topologie primitive actuellement définie.

Voir également setTopology().

QRhiVertexInputLayout QRhiGraphicsPipeline::vertexInputLayout() const

Renvoie la spécification de disposition des entrées de sommets actuellement définie.

Voir également 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.