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 : |
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.
| Constante | Valeur |
|---|---|
QRhiResource::Buffer | 0 |
QRhiResource::Texture | 1 |
QRhiResource::Sampler | 2 |
QRhiResource::RenderBuffer | 3 |
QRhiResource::RenderPassDescriptor | 4 |
QRhiResource::SwapChainRenderTarget | 5 |
QRhiResource::TextureRenderTarget | 6 |
QRhiResource::ShaderResourceBindings | 7 |
QRhiResource::GraphicsPipeline | 8 |
QRhiResource::SwapChain | 9 |
QRhiResource::ComputePipeline | 10 |
QRhiResource::CommandBuffer | 11 |
QRhiResource::ShadingRateMap | 12 |
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.