QRhiRenderPassDescriptor Class
Ressource de passe de rendu. 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 |
Fonctions publiques
| virtual bool | isCompatible(const QRhiRenderPassDescriptor *other) const = 0 |
| virtual const QRhiNativeHandles * | nativeHandles() |
| virtual QRhiRenderPassDescriptor * | newCompatibleRenderPassDescriptor() const = 0 |
| virtual QVector<quint32> | serializedFormat() const = 0 |
Fonctions publiques réimplémentées
| virtual QRhiResource::Type | resourceType() const override |
Description détaillée
Un passage de rendu, si ce concept existe dans l'API graphique sous-jacente, est un ensemble d'attachements (couleur, profondeur, stencil) et décrit la manière dont ces attachements sont utilisés.
Remarque : il s'agit d'une API RHI dont la compatibilité est garantie de manière limitée ; pour plus de détails, consultez QRhi.
Documentation des fonctions membres
[pure virtual] bool QRhiRenderPassDescriptor::isCompatible(const QRhiRenderPassDescriptor *other) const
Renvoie « true » si l'other QRhiRenderPassDescriptor est compatible avec celle-ci, ce qui signifie que this et other peuvent être utilisés de manière interchangeable dans QRhiGraphicsPipeline::setRenderPassDescriptor().
Le concept de compatibilité des descripteurs de renderpass est similaire à celui de la layout compatibility des instances QRhiShaderResourceBindings. Il permet une meilleure réutilisation des instances QRhiGraphicsPipeline: par exemple, un cache d’instances QRhiGraphicsPipeline est censé utiliser ces fonctions pour rechercher un pipeline correspondant, au lieu de se contenter de comparer des pointeurs, ce qui permet d’utiliser différents QRhiRenderPassDescriptor et QRhiShaderResourceBindings en combinaison avec le pipeline, à condition qu’ils soient compatibles.
Les détails précis de la compatibilité dépendent de l’API graphique sous-jacente. Deux descripteurs de renderpass created issus de la même QRhiTextureRenderTarget sont toujours compatibles.
À l’instar de ` QRhiShaderResourceBindings`, la compatibilité peut également être testée sans disposer de deux objets existants. L’extraction du blob opaque via l’appel à ` serializedFormat()` permet de tester la compatibilité en comparant le vecteur renvoyé à celui obtenu par l’appel à ` serializedFormat()` d’un autre ` QRhiRenderPassDescriptor`. Cela présente des avantages dans certaines situations, car cela permet de tester la compatibilité d’un ` QRhiRenderPassDescriptor ` avec un ` QRhiGraphicsPipeline ` même lorsque l’` QRhiRenderPassDescriptor ` avec lequel le pipeline a été initialement construit n’est plus disponible (mais que les données renvoyées par son ` serializedFormat()` le sont toujours).
Voir également newCompatibleRenderPassDescriptor() et serializedFormat().
[virtual] const QRhiNativeHandles *QRhiRenderPassDescriptor::nativeHandles()
Renvoie un pointeur vers une sous-classe de ` QRhiNativeHandles ` spécifique au backend, telle que ` QRhiVulkanRenderPassNativeHandles`. La valeur renvoyée est ` nullptr ` lorsque l'exposition des ressources natives sous-jacentes n'est pas prise en charge par le backend.
Voir également QRhiVulkanRenderPassNativeHandles.
[pure virtual] QRhiRenderPassDescriptor *QRhiRenderPassDescriptor::newCompatibleRenderPassDescriptor() const
Renvoie un nouvel objet ` QRhiRenderPassDescriptor ` qui est un ` compatible ` de celui-ci.
Cette fonction permet de cloner un objet ` QRhiRenderPassDescriptor`. L'objet renvoyé est prêt à l'emploi et la propriété est transférée à l'appelant. Le clonage d’un objet « QRhiRenderPassDescriptor » peut s’avérer utile dans les situations où l’objet est stocké dans des structures de données liées aux pipelines graphiques (afin de permettre la création de nouveaux pipelines qui, à leur tour, nécessitent un objet « renderpass descriptor »), et où la durée de vie du « renderpass descriptor » créé à partir d’une cible de rendu peut être plus courte que celle des pipelines. (Par exemple, car le moteur gère et détruit les renderpasses en même temps que les textures et les cibles de rendu à partir desquelles elles ont été créées.) Dans une telle situation, il peut être avantageux de stocker une version clonée dans les structures de données, et ainsi de transférer également la propriété.
Voir également isCompatible().
[override virtual] QRhiResource::Type QRhiRenderPassDescriptor::resourceType() const
Réimplémente : ` QRhiResource::resourceType()` const.
Renvoie le type de ressource.
[pure virtual] QVector<quint32> QRhiRenderPassDescriptor::serializedFormat() const
Renvoie un vecteur d'entiers contenant un blob opaque décrivant les données pertinentes pour compatibility.
Étant donnés deux objets ` QRhiRenderPassDescriptor `, ` rp1 ` et ` rp2`, si les données renvoyées par cette fonction sont identiques, alors ` rp1->isCompatible(rp2)` et, inversement, ` ` sont également vrais.
Remarque : les données renvoyées sont destinées à être stockées en mémoire et à servir de base à des comparaisons pendant la durée de vie de l’ QRhi à laquelle l’objet appartient. Elles ne sont pas destinées à être stockées sur disque, réutilisées entre processus, ni utilisées avec plusieurs instances de QRhi pouvant avoir des backends différents.
Remarque : l’appel de cette fonction est censé être une opération peu coûteuse, car les backends ne sont pas censés calculer les données dans cette fonction, mais plutôt renvoyer une série de données déjà calculées.
Lors de la création de composants réutilisables dans le cadre d’une bibliothèque, où des pipelines graphiques sont créés et gérés en ciblant une cible de rendu ( QRhiRenderTarget ) (qu’il s’agisse d’une chaîne d’échange ou d’une texture) gérée par le client de la bibliothèque, les composants doivent être capables de gérer une cible de rendu QRhiRenderPassDescriptor qui change. Par exemple, parce que la cible de rendu change et invalide ainsi l’ QRhiRenderPassDescriptor précédente (du moins par rapport à la nouvelle cible de rendu) en raison d’un format de couleur et de pièces jointes désormais potentiellement différents. Ou parce qu’ variable rate shading est utilisé de manière dynamique. Une méthode simple permettant de gérer ce cas consiste à effectuer la vérification suivante à chaque image, afin de détecter les situations où le pipeline doit être associé à une nouvelle QRhiRenderPassDescriptor, car la cible de rendu présente désormais des différences par rapport aux images précédentes :
QRhiRenderPassDescriptor *rp = m_renderTarget->renderPassDescriptor();
if (m_pipeline && rp->serializedFormat() != m_renderPassFormat) {
m_pipeline->setRenderPassDescriptor(rp);
m_renderPassFormat = rp->serializedFormat();
m_pipeline->create();
}
// remember to store m_renderPassFormat also when creating m_pipeline the first timeVoir également isCompatible().
© 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.