Sur cette page

QRhiResource Class

Classe de base pour les classes encapsulant des objets de ressources natifs. 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érité par :
12 types

QRhiBuffer, QRhiCommandBuffer, QRhiComputePipeline, QRhiGraphicsPipeline, QRhiRenderBuffer, QRhiRenderPassDescriptor, QRhiRenderTarget, QRhiSampler, QRhiShaderResourceBindings, QRhiShadingRateMap, QRhiSwapChain, et QRhiTexture

Types publics

enum Type { Buffer, Texture, Sampler, RenderBuffer, RenderPassDescriptor, …, ShadingRateMap }

Fonctions publiques

virtual ~QRhiResource()
void deleteLater()
virtual void destroy() = 0
quint64 globalResourceId() const
QByteArray name() const
virtual QRhiResource::Type resourceType() const = 0
QRhi *rhi() const
void setName(const QByteArray &name)

Fonctions protégées

QRhiResource(const QRhiResource &)
QRhiResource &operator=(const QRhiResource &)

Description détaillée

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

Documentation sur les types de membres

enum QRhiResource::Type

Spécifie le type de la ressource.

ConstanteValeur
QRhiResource::Buffer0
QRhiResource::Texture1
QRhiResource::Sampler2
QRhiResource::RenderBuffer3
QRhiResource::RenderPassDescriptor4
QRhiResource::SwapChainRenderTarget5
QRhiResource::TextureRenderTarget6
QRhiResource::ShaderResourceBindings7
QRhiResource::GraphicsPipeline8
QRhiResource::SwapChain9
QRhiResource::ComputePipeline10
QRhiResource::CommandBuffer11
QRhiResource::ShadingRateMap12

Documentation des fonctions membres

[protected delete] QRhiResource::QRhiResource(const QRhiResource &)

Copie et construit une instance de ` QRhiResource`. Cette fonction est supprimée.

[virtual noexcept] QRhiResource::~QRhiResource()

Destructeur.

Libère (ou demande la libération différée) des ressources graphiques natives sous-jacentes, le cas échéant.

Remarque : les ressources référencées par les commandes de l'image en cours ne doivent pas être libérées tant que l'image n'a pas été soumise par la fonction QRhi::endFrame().

Voir également destroy().

void QRhiResource::deleteLater()

Lorsqu’elle est appelée sans qu’aucune image ne soit en cours d’enregistrement, cette fonction équivaut à la suppression de l’objet. Entre un appel à ` QRhi::beginFrame()` et un appel à ` QRhi::endFrame()`, le comportement est toutefois différent : l’objet ` QRhiResource ` ne sera pas détruit tant que l’image n’aura pas été soumise via ` QRhi::endFrame()`, ce qui respecte ainsi l’exigence de la norme « QRhi » (ne pas modifier les objets ` QRhiResource ` référencés par l’image en cours d’enregistrement).

Si l’ QRhi e qui a créé cet objet est déjà détruite, l’objet est supprimé immédiatement.

L’utilisation de `deleteLater()` peut s’avérer pratique dans de nombreux cas, et elle complète la garantie de bas niveau (selon laquelle les objets graphiques natifs sous-jacents ne sont jamais détruits tant qu’il n’est pas sûr de le faire et qu’on ne sait pas avec certitude qu’ils ne sont pas utilisés par le GPU dans une image encore en cours de traitement), en offrant un moyen de s’assurer que les instances d’objets C++ (de QRhiBuffer, QRhiTexture, etc.) restent elles-mêmes valides jusqu’à la fin de l’image en cours.

L’exemple suivant illustre une méthode pratique pour créer un tampon jetable qui n’est utilisé que dans une seule image et qui est automatiquement libéré dans la fonction `endFrame()`. (en ce qui concerne le ou les tampons natifs sous-jacents, la garantie habituelle s’applique : le backend QRhi reporte leur libération jusqu’à ce qu’il soit garanti que l’image au cours de laquelle le tampon est accédé par le GPU soit terminée)

rhi->beginFrame(swapchain);
QRhiBuffer *buf = rhi->newBuffer(QRhiBuffer::Immutable, QRhiBuffer::VertexBuffer, 256);
buf->deleteLater(); // !
u = rhi->nextResourceUpdateBatch();
u->uploadStaticBuffer(buf, data);
// ... draw with buf
rhi->endFrame();

Voir également destroy().

[pure virtual] void QRhiResource::destroy()

Libère (ou demande la libération différée) des ressources graphiques natives sous-jacentes. Peut être appelé plusieurs fois en toute sécurité ; les appels suivants n'auront alors aucun effet.

Une fois la fonction `destroy()` appelée, l’instance ` QRhiResource ` peut être réutilisée en appelant à nouveau ` create() `. Cela entraînera alors la création de nouvelles ressources graphiques natives en arrière-plan.

Remarque : les ressources référencées par les commandes de l’image en cours ne doivent pas être libérées tant que l’image n’a pas été soumise par QRhi::endFrame().

Le destructeur de ` QRhiResource ` effectue également cette tâche ; il n’est donc pas nécessaire d’appeler cette fonction avant de supprimer un ` QRhiResource`.

Voir également deleteLater().

quint64 QRhiResource::globalResourceId() const

Renvoie l'identifiant global et unique de cet QRhiResource.

Le code utilisateur a rarement besoin d'utiliser directement cette valeur. Elle est utilisée en interne à des fins de suivi et de comptabilité.

QByteArray QRhiResource::name() const

Renvoie le nom de l'objet actuellement défini. Par défaut, ce nom est vide.

Voir aussi setName().

[pure virtual] QRhiResource::Type QRhiResource::resourceType() const

Renvoie le type de la ressource.

QRhi *QRhiResource::rhi() const

Renvoie l'QRhi qui a créé cette ressource.

Si l'QRhi e ayant créé cet objet a déjà été détruite, le résultat est « nullptr ».

void QRhiResource::setName(const QByteArray &name)

Définit une propriété « name » pour l'objet.

Cela permet d’obtenir des noms descriptifs pour les ressources graphiques natives visibles dans les outils de débogage graphique, tels que RenderDoc et XCode.

Lorsqu’il s’agit de nommer des objets natifs en transmettant le nom via l’API graphique appropriée, notez que le nom est ignoré lorsque les « QRhi::DebugMarkers » ne sont pas pris en charge, et peut, selon le backend, également être ignoré lorsque l’option « QRhi::EnableDebugMarkers » n’est pas activée.

Remarque : le nom peut être ignoré pour les objets autres que les tampons, les tampons de rendu et les textures, selon le backend.

Remarque : le nom peut être modifié. Pour les ressources à emplacements, telles qu’une « QRhiBuffer » (texture à emplacements) adossée à plusieurs tampons natifs, ` QRhi ` ajoutera un suffixe afin de permettre de distinguer facilement les tampons natifs sous-jacents les uns des autres.

Voir aussi name().

[protected delete] QRhiResource &QRhiResource::operator=(const QRhiResource &)

Copie et attribue « other » à cette instance « QRhiResource ». Cette fonction est supprimée.

© 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.