QRhiTextureRenderTarget Class
Ressource de cible de rendu de texture. 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 : | QRhiRenderTarget |
Types publics
| enum | Flag { PreserveColorContents, PreserveDepthStencilContents, DoNotStoreDepthStencilContents } |
| flags | Flags |
Fonctions publiques
| virtual bool | create() = 0 |
| QRhiTextureRenderTargetDescription | description() const |
| QRhiTextureRenderTarget::Flags | flags() const |
| virtual QRhiRenderPassDescriptor * | newCompatibleRenderPassDescriptor() = 0 |
| void | setDescription(const QRhiTextureRenderTargetDescription &desc) |
| void | setFlags(QRhiTextureRenderTarget::Flags f) |
Fonctions publiques réimplémentées
| virtual QRhiResource::Type | resourceType() const override |
Description détaillée
Une cible de rendu de texture permet d'effectuer un rendu dans une ou plusieurs textures, avec, en option, une texture de profondeur ou un tampon de rendu de profondeur/stencil.
Pour le rendu multi-échantillonnage, l’approche courante consiste à utiliser un tampon de rendu comme attachement de couleur et à définir la texture de destination non multi-échantillonnée comme « resolve texture ». Pour plus d’informations, consultez la description détaillée de la classe « QRhiColorAttachment ».
Remarque : les textures utilisées en combinaison avec QRhiTextureRenderTarget doivent être créées avec l’indicateur « QRhiTexture::RenderTarget ».
Voici l’exemple le plus simple de création d’une cible de rendu avec une texture comme seule attache de couleur :
QRhiTexture *texture = rhi->newTexture(QRhiTexture::RGBA8, size, 1, QRhiTexture::RenderTarget);
texture->create();
QRhiTextureRenderTarget *rt = rhi->newTextureRenderTarget({ texture });
rp = rt->newCompatibleRenderPassDescriptor();
rt->setRenderPassDescriptor(rp);
rt->create();
// rt can now be used with beginPass()Remarque : il s’agit d’une API RHI dont la compatibilité n’est pas entièrement garantie ; voir QRhi pour plus de détails.
Documentation sur les types de membres
enum QRhiTextureRenderTarget::Flag
flags QRhiTextureRenderTarget::Flags
Valeurs d'indicateurs décrivant le comportement de chargement/stockage pour la cible de rendu. Ce comportement peut être intégré en arrière-plan dans les ressources natives, selon le backend utilisé ; il doit donc être connu à l'avance et ne peut être modifié sans recompilation (et donc sans publication et création de nouvelles ressources natives).
| Constante | Valeur | Description |
|---|---|---|
QRhiTextureRenderTarget::PreserveColorContents | 1 << 0 | Indique que le contenu des pièces jointes de couleur doit être chargé au début d’un passage de rendu, au lieu d’être effacé. Cette opération est potentiellement plus coûteuse, en particulier sur les GPU mobiles (en mosaïque), mais permet de conserver le contenu existant entre les passages. Lors d’un rendu multisample avec un ensemble de textures de résolution, l’activation de cet indicateur demande également que les données de couleur multisample soient stockées (écrites) dans la texture multisample ou le tampon de rendu. (pour le rendu non multisample, les données de couleur sont toujours stockées ; cependant, pour le MSAA, le stockage des données multisample réduit l’efficacité sur certaines architectures de GPU, c’est pourquoi la valeur par défaut est de ne pas les écrire) Notez toutefois que cette fonctionnalité n’est pas portable : dans certains cas, il n’existe pas de texture multisample intermédiaire au niveau de l’API graphique, par exemple lors de l’utilisation de la fonction « GL_EXT_multisampled_render_to_texture » d’OpenGL ES, car tout est implicite et géré par l’implémentation d’OpenGL ES. Dans ce cas, PreserveColorContents n’aura probablement aucun effet. Par conséquent, évitez de vous fier à cet indicateur lorsque vous utilisez le rendu multisample et que l'attachement de couleur utilise une texture multisample QRhiTexture (et non QRhiRenderBuffer). |
QRhiTextureRenderTarget::PreserveDepthStencilContents | 1 << 1 | Indique que le contenu de la texture de profondeur doit être chargé au début d’un passage de rendu, au lieu d’être effacé. Applicable uniquement lorsqu’une texture est utilisée comme tampon de profondeur (QRhiTextureRenderTargetDescription::depthTexture() est activé), car les tampons de rendu de profondeur/stencil peuvent ne pas disposer de support physique et les données peuvent ne pas être écrites dès le départ. |
QRhiTextureRenderTarget::DoNotStoreDepthStencilContents | 1 << 2 | Indique que le contenu de la texture de profondeur n’a pas besoin d’être écrit. Pertinent uniquement lorsqu’une texture de résolution de profondeur ( QRhiTexture), et non une texture de résolution de stencil ( QRhiRenderBuffer), est utilisée comme tampon de profondeur-stencil, car pour QRhiRenderBuffer, cela est implicite. Lorsqu’une texture de résolution de profondeur (depthResolveTexture) est définie, ce drapeau n’est pas pertinent, car le comportement est alors le même que si le drapeau était activé. Cette valeur d’énumération a été introduite dans Qt 6.8. |
Le type `Flags` est un `typedef` pour ` QFlags<Flag>`. Il stocke une combinaison OR de valeurs `Flag`.
Documentation des fonctions membres
[pure virtual] bool QRhiTextureRenderTarget::create()
Crée les ressources graphiques natives correspondantes. Si des ressources existent déjà en raison d'un appel antérieur à create() sans appel correspondant à destroy(), alors la fonction destroy() est d'abord appelée implicitement.
Remarque : la fonction renderPassDescriptor() doit être définie avant d’appeler create(). Pour obtenir un descripteur de rendu ( QRhiRenderPassDescriptor ) compatible avec la cible de rendu (render target), appelez la fonction newCompatibleRenderPassDescriptor() avant create(), mais après avoir défini tous les autres paramètres, tels que description() et flags(). Pour économiser des ressources, réutilisez le même descripteur de rendu ( QRhiRenderPassDescriptor ) avec plusieurs instances de cible de rendu ( QRhiTextureRenderTarget ), dans la mesure du possible. Le partage d’un même descripteur de passe de rendu n’est possible que lorsque les cibles de rendu possèdent le même nombre et le même type de pièces jointes (les textures elles-mêmes peuvent différer) ainsi que les mêmes indicateurs.
Remarque : les ressources , telles que les instances ` QRhiTexture `, référencées dans ` description()` doivent déjà avoir fait l’objet d’un appel à la fonction `create()`.
Renvoie ` true ` en cas de succès, ` false ` lorsqu’une opération graphique a échoué. Quelle que soit la valeur renvoyée, l’appel à ` destroy()` est toujours sans risque.
QRhiTextureRenderTargetDescription QRhiTextureRenderTarget::description() const
Renvoie la description de la cible de rendu.
Voir aussi setDescription().
QRhiTextureRenderTarget::Flags QRhiTextureRenderTarget::flags() const
Renvoie les indicateurs actuellement définis.
Voir aussi setFlags().
[pure virtual] QRhiRenderPassDescriptor *QRhiTextureRenderTarget::newCompatibleRenderPassDescriptor()
Renvoie un nouvel objet ` QRhiRenderPassDescriptor ` compatible avec cette cible de rendu.
La valeur renvoyée est utilisée de deux manières : elle peut être transmise aux fonctions ` setRenderPassDescriptor()` et ` QRhiGraphicsPipeline::setRenderPassDescriptor()`. Un descripteur de passe de rendu décrit les pièces jointes (couleur, profondeur/stencil) ainsi que le comportement de chargement/stockage qui peut être modifié par la fonction ` flags()`. Un ` QRhiGraphicsPipeline ` ne peut être utilisé qu'en combinaison avec une cible de rendu pour laquelle un ` compatible ` QRhiRenderPassDescriptor a été défini.
Deux instances d’ QRhiTextureRenderTarget peuvent partager le même descripteur de passe de rendu tant qu’elles possèdent le même nombre et le même type de pièces jointes. Les instances associées d’ QRhiTexture ou d’ QRhiRenderBuffer ne font pas partie du descripteur de passe de rendu ; elles peuvent donc différer entre les deux instances d’ QRhiTextureRenderTarget.
Remarque : les ressources , telles que les instances QRhiTexture, référencées dans description() doivent déjà avoir fait l’objet d’un appel à create().
Voir également ` create()` ().
[override virtual] QRhiResource::Type QRhiTextureRenderTarget::resourceType() const
Réimplémente : ` QRhiResource::resourceType()` const.
Renvoie le type de ressource.
void QRhiTextureRenderTarget::setDescription(const QRhiTextureRenderTargetDescription &desc)
Définit la description de la cible de rendu desc.
Voir également description().
void QRhiTextureRenderTarget::setFlags(QRhiTextureRenderTarget::Flags f)
Définit les indicateurs sur « f ».
Voir aussi flags().
© 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.