QRhiGraphicsPipeline Class
Ressource d'état du pipeline graphique. Plus d'informations...
| 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 : | 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 } |
| 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. Ce à quoi cela correspond exactement dans l'API graphique native sous-jacente varie. Lorsqu'il existe un concept d'objets pipeline, par exemple avec Vulkan, le backend QRhi créera un tel objet lors de l'appel à create(). Ailleurs, par exemple avec OpenGL, le QRhiGraphicsPipeline peut simplement collecter les différents états, et la tâche principale de create() est de mettre en place le programme de shader correspondant, mais en reportant l'examen de l'état demandé à un moment ultérieur.
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 setters, par exemple setDepthTest(), n'est effective qu'après l'appel à create(). Évitez de modifier des valeurs une fois que la QRhiGraphicsPipeline a été initialisée via create(). Pour modifier un état, définissez la nouvelle valeur et appelez à nouveau create(). Cependant, cela aura pour effet de libérer toutes les ressources natives sous-jacentes et d'en créer de nouvelles. Par conséquent, il peut s'agir d'une opération lourde et coûteuse. Préférez plutôt créer plusieurs pipelines avec les différents états, et switch between them lors de l'enregistrement de la passe de rendu.
Remarque : il est obligatoire de définir les étapes du shader. Il doit y avoir au moins un étage et un étage de vertex.
Remarque : il est obligatoire de définir les liens avec les ressources du shader. Le site QRhiShaderResourceBindings référencé doit déjà avoir fait l'objet d'un appel à create() au moment où create() est appelé. L'association avec un objet QRhiShaderResourceBindings qui n'a pas de liaison est également valable, à condition qu'aucun shader d'aucune étape n'attende de ressources. L'utilisation d'un objet QRhiShaderResourceBindings qui ne spécifie aucune ressource réelle (c'est-à-dire que les tampons, les textures, etc. pour les points de liaison sont définis à nullptr) est également valable, tant qu'un objet layout-compatible QRhiShaderResourceBindings , qui spécifie les ressources pour toutes les liaisons, sera défini via setShaderResources() lors de l'enregistrement de la passe de rendu.
Remarque : la définition du descripteur de la passe de rendu est obligatoire. Pour obtenir un QRhiRenderPassDescriptor qui peut être transmis à setRenderPassDescriptor(), utilisez QRhiTextureRenderTarget::newCompatibleRenderPassDescriptor() ou QRhiSwapChain::newCompatibleRenderPassDescriptor().
Remarque : il est obligatoire de définir la disposition des vertex à l'entrée.
Note : sampleCount() vaut par défaut 1 et doit correspondre au nombre d'échantillons de la couleur de la cible de rendu et des pièces jointes du stencil de profondeur.
Remarque : le test de profondeur, l'écriture de profondeur et le test de stencil sont désactivés par défaut. Le mode d'atténuation des visages est défini par défaut sur pas d'atténuation.
Remarque : stencilReadMask() et stencilWriteMask() s'appliquent aux deux faces. La 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 nuanceur de sommets prenne une seule entrée vec3 position à l'emplacement d'entrée 0. Avec les objets QRhiShaderResourceBindings et QRhiRenderPassDescriptor, plus les 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 Triangles, pas de backface culling, le mélange est désactivé mais l'écriture des couleurs est activée pour les quatre canaux, le test/écriture de la profondeur est désactivé, les opérations de pochoir sont désactivées.
Remarque : il s'agit d'une API RHI avec des garanties de compatibilité limitées, voir QRhi pour plus de détails.
Voir également QRhiCommandBuffer et QRhi.
Documentation sur les types de membres
enum QRhiGraphicsPipeline::BlendFactor
Spécifie le facteur de mélange
| Constante | Valeur |
|---|---|
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
Spécifie l'opération de mélange
| Constante | Valeur |
|---|---|
QRhiGraphicsPipeline::Add | 0 |
QRhiGraphicsPipeline::Subtract | 1 |
QRhiGraphicsPipeline::ReverseSubtract | 2 |
QRhiGraphicsPipeline::Min | 3 |
QRhiGraphicsPipeline::Max | 4 |
enum QRhiGraphicsPipeline::ColorMaskComponent
flags QRhiGraphicsPipeline::ColorMask
Valeurs des drapeaux permettant de spécifier le masque d'écriture des couleurs
| Constante | Valeur |
|---|---|
QRhiGraphicsPipeline::R | 1 << 0 |
QRhiGraphicsPipeline::G | 1 << 1 |
QRhiGraphicsPipeline::B | 1 << 2 |
QRhiGraphicsPipeline::A | 1 << 3 |
Le type ColorMask est un typedef pour QFlags<ColorMaskComponent>. Il stocke une combinaison OU de valeurs ColorMaskComponent.
enum QRhiGraphicsPipeline::CompareOp
Spécifie la fonction de comparaison de la profondeur ou du pochoir
| Constante | Valeur | Description de la constante |
|---|---|---|
QRhiGraphicsPipeline::Never | 0 | |
QRhiGraphicsPipeline::Less | 1 | (par défaut pour la profondeur) |
QRhiGraphicsPipeline::Equal | 2 | |
QRhiGraphicsPipeline::LessOrEqual | 3 | |
QRhiGraphicsPipeline::Greater | 4 | |
QRhiGraphicsPipeline::NotEqual | 5 | |
QRhiGraphicsPipeline::GreaterOrEqual | 6 | |
QRhiGraphicsPipeline::Always | 7 | (par défaut pour le stencil) |
enum QRhiGraphicsPipeline::CullMode
Spécifie le mode d'abattage
| Constante | Valeur | Description du mode d'abattage |
|---|---|---|
QRhiGraphicsPipeline::None | 0 | Pas d'abattage (par défaut) |
QRhiGraphicsPipeline::Front | 1 | Extraction des faces avant |
QRhiGraphicsPipeline::Back | 2 | Eliminer les faces arrière |
enum QRhiGraphicsPipeline::Flag
flags QRhiGraphicsPipeline::Flags
Valeurs des drapeaux pour décrire l'état dynamique du pipeline et d'autres options. La fenêtre de visualisation est toujours dynamique.
| Constante | Valeur | Description |
|---|---|---|
QRhiGraphicsPipeline::UsesBlendConstants | 1 << 0 | Indique qu'une constante de couleur de mélange sera définie via QRhiCommandBuffer::setBlendConstants() |
QRhiGraphicsPipeline::UsesStencilRef | 1 << 1 | Indique qu'une valeur de référence du pochoir sera définie via QRhiCommandBuffer::setStencilRef() |
QRhiGraphicsPipeline::UsesScissor | 1 << 2 | Indique qu'un rectangle de ciseaux sera défini via QRhiCommandBuffer::setScissor() |
QRhiGraphicsPipeline::CompileShadersWithDebugInfo | 1 << 3 | Demande la compilation des shaders avec les informations de débogage activées. Ceci n'est pertinent que lorsque la compilation des shaders à partir du code source est impliquée, et seulement si l'infrastructure sous-jacente le supporte. Avec des exemples concrets, ce n'est pas pertinent avec Vulkan et SPIR-V, parce que la compilation GLSL vers SPIR-V ne se produit pas au moment de l'exécution. D'un autre côté, considérons Direct3D et HLSL, pour lesquels il existe plusieurs options : lorsque les paquets QShader sont livrés 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, comme dans le cas de Vulkan et SPIR-V. Cependant, lorsque le code source HLSL se trouve dans les paquets QShader générés avant ou pendant l'exécution, la première phase de compilation (source HLSL vers format intermédiaire) se produit également pendant l'exécution, avec cet indicateur pris en compte. Les informations de débogage sont particulièrement importantes pour des outils tels que RenderDoc, car elles permettent de voir le code source original lors de l'examen du pipeline et du débogage des vertex ou des fragment shaders. |
QRhiGraphicsPipeline::UsesShadingRate | 1 << 4 | Indique qu'une valeur de taux d'ombrage par dessin (par pipeline) sera définie via QRhiCommandBuffer::setShadingRate(). Ne pas spécifier ce drapeau et appeler setShadingRate() peut conduire à des résultats variables et inattendus en fonction de l'API graphique sous-jacente. |
Le type Flags est un typedef pour QFlags<Flag>. Il stocke une combinaison OU de valeurs de drapeaux.
enum QRhiGraphicsPipeline::FrontFace
Spécifie l'ordre d'enroulement de la face avant
| Constante | Valeur | Description de la constante |
|---|---|---|
QRhiGraphicsPipeline::CCW | 0 | Sens inverse des aiguilles d'une montre (par défaut) |
QRhiGraphicsPipeline::CW | 1 | Dans le sens des aiguilles d'une montre |
enum QRhiGraphicsPipeline::PolygonMode
Spécifie le mode de tramage des polygones
Polygon Mode (Triangle Fill Mode dans Metal, Fill Mode dans D3D) spécifie le mode de remplissage utilisé lors du tramage des polygones. Les polygones peuvent être dessinés comme des solides (Fill) ou comme un treillis métallique (Line).
La prise en charge des modes de polygone sans remplissage est facultative et est indiquée par la fonctionnalité QRhi::NonFillPolygonMode. Avec OpenGL ES et certaines implémentations Vulkan, la 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.
| Constante | Valeur | Description |
|---|---|---|
QRhiGraphicsPipeline::Fill | 0 | L'intérieur du polygone est rempli (par défaut). |
QRhiGraphicsPipeline::Line | 1 | Les bords du polygone sont dessinés comme des segments de ligne. |
enum QRhiGraphicsPipeline::StencilOp
Spécifie l'opération de pochoir
| Constante | Valeur | Description (par défaut) |
|---|---|---|
QRhiGraphicsPipeline::StencilZero | 0 | |
QRhiGraphicsPipeline::Keep | 1 | (par défaut) |
QRhiGraphicsPipeline::Replace | 2 | |
QRhiGraphicsPipeline::IncrementAndClamp | 3 | |
QRhiGraphicsPipeline::DecrementAndClamp | 4 | |
QRhiGraphicsPipeline::Invert | 5 | |
QRhiGraphicsPipeline::IncrementAndWrap | 6 | |
QRhiGraphicsPipeline::DecrementAndWrap | 7 |
enum QRhiGraphicsPipeline::Topology
Spécifie la topologie primitive
| Constante | Valeur | Description |
|---|---|---|
QRhiGraphicsPipeline::Triangles | 0 | (par défaut) |
QRhiGraphicsPipeline::TriangleStrip | 1 | |
QRhiGraphicsPipeline::TriangleFan | 2 | (disponible uniquement si QRhi::TriangleFanTopology est pris en charge) |
QRhiGraphicsPipeline::Lines | 3 | |
QRhiGraphicsPipeline::LineStrip | 4 | |
QRhiGraphicsPipeline::Points | 5 | |
QRhiGraphicsPipeline::Patches | 6 | (disponible uniquement si QRhi::Tessellation est pris en charge, et nécessite que les étapes de tessellation soient présentes dans le pipeline) |
Documentation des fonctions membres
const QRhiShaderStage *QRhiGraphicsPipeline::cbeginShaderStages() const
Renvoie un itérateur constant pointant vers le premier élément de la liste des étapes du 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 mélange 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 du shader.
const QRhiGraphicsPipeline::TargetBlend *QRhiGraphicsPipeline::cendTargetBlends() const
Renvoie un itérateur constant pointant juste après le dernier élément de la liste des paramètres de mélange de la cible de rendu.
[pure virtual] bool QRhiGraphicsPipeline::create()
Crée les ressources graphiques natives correspondantes. Si des ressources sont déjà présentes en raison d'un create() antérieur sans destroy() correspondant, alors destroy() est appelé implicitement en premier.
Retourne true en cas de succès, false en cas d'échec de l'opération graphique. Quelle que soit la valeur de retour, l'appel à destroy() est toujours sûr.
Remarque : selon l'API graphique sous-jacente, il peut s'agir d'une opération coûteuse, en particulier lorsque les shaders sont compilés/optimisés à partir de la source ou d'un format de bytecode intermédiaire vers le jeu d'instructions propre au GPU. Le cas échéant, le backend QRhi met automatiquement en place les installations non persistantes appropriées pour accélérer cette opération. Par exemple, le backend Vulkan crée automatiquement un site VkPipelineCache pour améliorer la réutilisation des données pendant la durée de vie de l'application.
Remarque : les pilotes peuvent également utiliser diverses stratégies de mise en cache persistante (sur disque) pour les données de shader et de pipeline, qui sont cachées et hors du contrôle de Qt. Dans certains cas, en fonction de l'API graphique et du backend QRhi, il existe des facilités dans QRhi pour gérer manuellement un tel cache, permettant la récupération d'un blob sérialisable qui peut ensuite être rechargé dans les futures exécutions de l'application pour assurer des temps de création de pipeline plus rapides. Voir QRhi::pipelineCacheData() et QRhi::setPipelineCacheData() pour plus de détails. Notez également que lorsque vous travaillez avec une instance de QRhi gérée par un cadre Qt de niveau supérieur, tel que Qt Quick, il est possible que cette mise en cache sur disque soit prise en charge automatiquement, par exemple QQuickWindow utilise un cache de pipeline sur disque par défaut (qui vient en plus de toute mise en cache au niveau du pilote).
QRhiGraphicsPipeline::CullMode QRhiGraphicsPipeline::cullMode() const
Renvoie le mode d'abattage des visages actuellement défini.
Voir aussi setCullMode().
int QRhiGraphicsPipeline::depthBias() const
Renvoie le biais de profondeur actuellement défini.
Voir également setDepthBias().
QRhiGraphicsPipeline::CompareOp QRhiGraphicsPipeline::depthOp() const
Renvoie la fonction de comparaison de profondeur.
Voir aussi setDepthOp().
QRhiGraphicsPipeline::Flags QRhiGraphicsPipeline::flags() const
Renvoie les drapeaux actuellement définis.
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
Retourne vrai si la pince de profondeur est activée.
Cette fonction a été introduite dans Qt 6.11.
bool QRhiGraphicsPipeline::hasDepthTest() const
Retourne true si le test de profondeur est activé.
bool QRhiGraphicsPipeline::hasDepthWrite() const
Retourne vrai si l'écriture en profondeur est activée.
bool QRhiGraphicsPipeline::hasStencilTest() const
Retourne true si le test des pochoirs est activé.
float QRhiGraphicsPipeline::lineWidth() const
Renvoie la largeur de ligne actuellement définie. La valeur par défaut est 1.0f.
Voir aussi 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 multivues.
Cette fonction a été introduite dans Qt 6.7.
Voir aussi setMultiViewCount().
int QRhiGraphicsPipeline::patchControlPointCount() const
Renvoie le nombre de points de contrôle du patch actuellement défini.
Voir aussi setPatchControlPointCount().
QRhiGraphicsPipeline::PolygonMode QRhiGraphicsPipeline::polygonMode() const
Renvoie le mode polygone.
Voir aussi setPolygonMode().
QRhiRenderPassDescriptor *QRhiGraphicsPipeline::renderPassDescriptor() const
Renvoie l'adresse 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. 1 signifie qu'il n'y a pas d'anti-crénelage multi-échantillon.
Voir aussi setSampleCount().
void QRhiGraphicsPipeline::setCullMode(QRhiGraphicsPipeline::CullMode mode)
Définit l'élimination des visages spécifiée mode.
Voir également cullMode().
void QRhiGraphicsPipeline::setDepthBias(int bias)
Définit la profondeur bias. La valeur par défaut est 0.
Voir également depthBias().
[since 6.11] void QRhiGraphicsPipeline::setDepthClamp(bool enable)
Active la compression de la profondeur lorsque enable est vrai. Lorsque la compression de profondeur est activée, les primitives qui seraient autrement coupées par le plan de coupe proche ou lointain sont tramées et leurs valeurs de profondeur sont restreintes à la plage de profondeur. Lorsqu'il est désactivé (par défaut), ces primitives sont écrêtées.
Remarque : ce paramètre est ignoré lorsque la fonction QRhi::DepthClamp est signalée comme n'étant pas 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 aussi depthOp().
void QRhiGraphicsPipeline::setDepthTest(bool enable)
Active ou désactive la vérification de la profondeur sur la base de enable. Le test de profondeur et l'écriture des données de profondeur sont désactivés par défaut.
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. Cette fonction est désactivée par défaut. 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 en profondeur sans avoir activé le test de profondeur peut ne pas conduire au résultat souhaité et doit être évitée.
Voir également hasDepthWrite() et setDepthTest().
void QRhiGraphicsPipeline::setFlags(QRhiGraphicsPipeline::Flags f)
Définit les drapeaux f.
Voir aussi 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 la ligne width. Si la fonctionnalité QRhi::WideLines est signalée comme non prise en charge à l'exécution, les valeurs autres que 1.0f sont ignorées.
Voir aussi lineWidth().
[since 6.7] void QRhiGraphicsPipeline::setMultiViewCount(int count)
Définit la vue count pour le rendu multi-vues. La valeur par défaut est 0, ce qui indique qu'il n'y a pas de rendu multivue. count doit être égal ou supérieur à 2 pour déclencher le rendu multivue.
Le rendu multi-vues n'est disponible que si l'adresse MultiView feature est signalée comme étant prise en charge. La cible de rendu doit être un tableau de textures 2D et l'attachement de couleur pour la cible de rendu doit avoir le même ensemble count.
Voir QRhiColorAttachment::setMultiViewCount() pour plus de détails sur le rendu multi-vues.
Cette fonction a été introduite dans Qt 6.7.
Voir aussi multiViewCount(), QRhi::MultiView, et QRhiColorAttachment::setMultiViewCount().
void QRhiGraphicsPipeline::setPatchControlPointCount(int count)
Définit le nombre de points de contrôle de patch à 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 le polygone mode. La valeur par défaut est Fill.
Voir également polygonMode() et QRhi::NonFillPolygonMode.
void QRhiGraphicsPipeline::setRenderPassDescriptor(QRhiRenderPassDescriptor *desc)
S'associe au site spécifié QRhiRenderPassDescriptor desc .
Voir aussi renderPassDescriptor().
void QRhiGraphicsPipeline::setSampleCount(int s)
Définit le nombre d'échantillons. Les valeurs typiques 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)
Associe à srb la description de la structure de liaison des ressources et les ressources (QRhiBuffer, QRhiTexture) elles-mêmes. Ce dernier point est facultatif, car seule la disposition importe lors de la création du pipeline. Par conséquent, le srb passé ici peut laisser les objets de tampon ou de texture non spécifiés (nullptr) tant qu'il y a un autre layout-compatible QRhiShaderResourceBindings lié via setShaderResources() avant d'enregistrer les appels de dessin.
Voir aussi shaderResourceBindings().
void QRhiGraphicsPipeline::setShaderStages(std::initializer_list<QRhiShaderStage> list)
Définit l'adresse list des étapes du shader.
template <typename InputIterator> void QRhiGraphicsPipeline::setShaderStages(InputIterator first, InputIterator last)
Définit la liste des étapes du shader à partir des itérateurs first et last.
void QRhiGraphicsPipeline::setSlopeScaledDepthBias(float bias)
Définit la profondeur à l'échelle de la pente bias. La valeur par défaut est 0.
Voir également slopeScaledDepthBias().
void QRhiGraphicsPipeline::setStencilBack(const QRhiGraphicsPipeline::StencilOpState &state)
Définit le test du pochoir state pour les faces arrière.
Voir également stencilBack().
void QRhiGraphicsPipeline::setStencilFront(const QRhiGraphicsPipeline::StencilOpState &state)
Définit le test du pochoir state pour les faces avant.
Voir également stencilFront().
void QRhiGraphicsPipeline::setStencilReadMask(quint32 mask)
Définit la lecture du stencil mask. La valeur par défaut est 0xFF.
Voir aussi stencilReadMask().
void QRhiGraphicsPipeline::setStencilTest(bool enable)
Active ou désactive les tests de pochoirs basés sur enable. Par défaut, cette option est désactivée.
Voir également hasStencilTest().
void QRhiGraphicsPipeline::setStencilWriteMask(quint32 mask)
Définit l'écriture du stencil mask. La valeur par défaut est 0xFF.
Voir également stencilWriteMask().
void QRhiGraphicsPipeline::setTargetBlends(std::initializer_list<QRhiGraphicsPipeline::TargetBlend> list)
Définit l'adresse 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 (par exemple, un site QRhiTextureRenderTarget avec plus d'un site QRhiColorAttachment), il doit y avoir une structure TargetBlend par cible de rendu (attachement de couleur).
Par défaut, il n'y a qu'un seul ensemble TargetBlend construit par défaut.
Voir aussi 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 primitive t.
Voir aussi topology().
void QRhiGraphicsPipeline::setVertexInputLayout(const QRhiVertexInputLayout &layout)
Spécifie l'entrée vertex layout.
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 du shader à l'adresse index spécifiée.
qsizetype QRhiGraphicsPipeline::shaderStageCount() const
Renvoie le nombre d'étages de shaders 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 du pochoir pour les faces arrière.
Voir aussi setStencilBack().
QRhiGraphicsPipeline::StencilOpState QRhiGraphicsPipeline::stencilFront() const
Renvoie l'état actuel du test du pochoir pour les faces avant.
Voir aussi setStencilFront().
quint32 QRhiGraphicsPipeline::stencilReadMask() const
Renvoie le masque de lecture actuel du stencil.
Voir aussi setStencilReadMask().
quint32 QRhiGraphicsPipeline::stencilWriteMask() const
Renvoie le masque d'écriture actuel du stencil.
Voir aussi setStencilWriteMask().
const QRhiGraphicsPipeline::TargetBlend *QRhiGraphicsPipeline::targetBlendAt(qsizetype index) const
Renvoie le paramètre de mélange de la cible de rendu à l'adresse index.
qsizetype QRhiGraphicsPipeline::targetBlendCount() const
Renvoie le nombre de paramètres de mélange de la cible de rendu.
QRhiGraphicsPipeline::Topology QRhiGraphicsPipeline::topology() const
Renvoie la topologie primitive actuellement définie.
Voir aussi setTopology().
QRhiVertexInputLayout QRhiGraphicsPipeline::vertexInputLayout() const
Renvoie la spécification de disposition d'entrée des vertex actuellement définie.
Voir aussi 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.