Sur cette page

QRhiTextureRenderTarget Class

Ressource cible pour le rendu de la texture. 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 : 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, éventuellement avec une texture de profondeur ou un tampon de rendu de profondeur/stencil.

Pour un rendu multi-échantillon, l'approche courante consiste à utiliser un tampon de rendu comme attachement de couleur et à définir la texture de destination non multi-échantillon comme resolve texture. Pour plus d'informations, lisez la description détaillée de la classe QRhiColorAttachment.

Remarque : les textures utilisées en combinaison avec QRhiTextureRenderTarget doivent être créées avec le drapeau QRhiTexture::RenderTarget.

L'exemple le plus simple de création d'une cible de rendu avec une texture comme pièce jointe de couleur unique :

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

Note : Il s'agit d'une API RHI avec des garanties de compatibilité limitées, voir QRhi pour plus de détails.

Documentation des types de membres

enum QRhiTextureRenderTarget::Flag
flags QRhiTextureRenderTarget::Flags

Valeurs des drapeaux décrivant le comportement de chargement/stockage pour la cible de rendu. Le comportement de chargement/stockage peut être intégré dans les ressources natives sous le capot, en fonction du backend, et il doit donc être connu à l'avance et ne peut pas être modifié sans reconstruction (et donc sans libérer et créer de nouvelles ressources natives).

ConstanteValeurDescription
QRhiTextureRenderTarget::PreserveColorContents1 << 0Indique que le contenu des pièces jointes de couleur doit être chargé lors du démarrage d'une passe de rendu, au lieu d'être effacé. Cette méthode est potentiellement plus coûteuse, en particulier sur les GPU mobiles (en mosaïque), mais elle permet de préserver le contenu existant entre les passes. Lors d'un rendu multi-échantillon avec un jeu de textures résolues, l'activation de ce drapeau demande également que les données de couleur multi-échantillon soient stockées (écrites) dans la texture multi-échantillon ou dans le tampon de rendu. (pour un rendu non multi-échantillon, les données de couleur sont toujours stockées, mais pour MSAA, stocker les données multi-échantillon diminue l'efficacité pour certaines architectures de GPU, d'où le choix par défaut de ne pas les écrire) Notez cependant que ceci n'est pas portable : dans certains cas, il n'y a pas de texture multi-échantillon intermédiaire au niveau de l'API graphique, par exemple lors de l'utilisation de GL_EXT_multisampled_render_to_texture d'OpenGL ES, car tout est implicite, 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 à ce drapeau lorsque vous utilisez un rendu multi-échantillon et que l'attachement de couleur utilise un multi-échantillon QRhiTexture (pas QRhiRenderBuffer).
QRhiTextureRenderTarget::PreserveDepthStencilContents1 << 1Indique que le contenu de la texture de profondeur doit être chargé au début d'une passe de rendu, au lieu d'être effacé. Uniquement applicable lorsqu'une texture est utilisée comme tampon de profondeur (QRhiTextureRenderTargetDescription::depthTexture() est défini) car les tampons de rendu de profondeur/stencil peuvent ne pas avoir de support physique et les données peuvent ne pas être écrites en premier lieu.
QRhiTextureRenderTarget::DoNotStoreDepthStencilContents1 << 2Indique que le contenu de la texture de profondeur n'a pas besoin d'être écrit. N'est pertinent que lorsqu'un QRhiTexture, et non un QRhiRenderBuffer, est utilisé comme tampon de texture de profondeur, car pour QRhiRenderBuffer, cela est implicite. Lorsqu'une depthResolveTexture est définie, l'indicateur n'est pas pertinent, car le comportement est alors le même que si l'indicateur était défini. Cette valeur d'enum est introduite dans Qt 6.8.

Le type Flags est un typedef pour QFlags<Flag>. Il stocke une combinaison OU de valeurs de drapeaux.

Documentation des fonctions membres

[pure virtual] bool QRhiTextureRenderTarget::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.

Remarque : renderPassDescriptor() doit être défini avant d'appeler create(). Pour obtenir un QRhiRenderPassDescriptor compatible avec la cible de rendu, appelez newCompatibleRenderPassDescriptor() avant create() mais après avoir défini tous les autres paramètres, tels que description() et flags(). Pour économiser des ressources, réutiliser le même QRhiRenderPassDescriptor avec plusieurs instances QRhiTextureRenderTarget, dans la mesure du possible. Le partage du même descripteur de passage de rendu n'est possible que si les cibles de rendu ont le même nombre et le même type d'attachements (les textures réelles peuvent différer) et les mêmes drapeaux.

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().

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.

QRhiTextureRenderTargetDescription QRhiTextureRenderTarget::description() const

Renvoie la description de la cible de rendu.

Voir aussi setDescription().

QRhiTextureRenderTarget::Flags QRhiTextureRenderTarget::flags() const

Renvoie les drapeaux actuellement définis.

Voir aussi setFlags().

[pure virtual] QRhiRenderPassDescriptor *QRhiTextureRenderTarget::newCompatibleRenderPassDescriptor()

Renvoie une nouvelle adresse QRhiRenderPassDescriptor compatible avec cette cible de rendu.

La valeur renvoyée est utilisée de deux manières : elle peut être transmise à setRenderPassDescriptor() et QRhiGraphicsPipeline::setRenderPassDescriptor(). Un descripteur de passe de rendu décrit les pièces jointes (couleur, profondeur/stencil) et le comportement de chargement/stockage qui peuvent être affectés par flags(). Une instance QRhiGraphicsPipeline ne peut être utilisée qu'en combinaison avec une cible de rendu ayant un ensemble compatible QRhiRenderPassDescriptor .

Deux instances QRhiTextureRenderTarget peuvent partager le même descripteur de passe de rendu tant qu'elles ont le même nombre et le même type de pièces jointes. Les instances QRhiTexture ou QRhiRenderBuffer associées ne font pas partie du descripteur de la passe de rendu et peuvent donc être différentes dans les deux instances 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 aussi description().

void QRhiTextureRenderTarget::setFlags(QRhiTextureRenderTarget::Flags f)

Définit les drapeaux à 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.