QRhiRenderBuffer Class
Ressource du tampon de rendu. 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 : | QRhiResource |
Types publics
| struct | NativeRenderBuffer |
| enum | Flag { UsedWithSwapChainOnly } |
| flags | Flags |
| enum | Type { DepthStencil, Color } |
Fonctions publiques
| virtual bool | create() = 0 |
| virtual bool | createFrom(QRhiRenderBuffer::NativeRenderBuffer src) |
| QRhiRenderBuffer::Flags | flags() const |
| QSize | pixelSize() const |
| int | sampleCount() const |
| void | setFlags(QRhiRenderBuffer::Flags f) |
| void | setPixelSize(const QSize &sz) |
| void | setSampleCount(int s) |
| void | setType(QRhiRenderBuffer::Type t) |
| QRhiRenderBuffer::Type | type() const |
Fonctions publiques réimplémentées
| virtual QRhiResource::Type | resourceType() const override |
Description détaillée
Les tampons de rendu ne peuvent pas être échantillonnés ou lus, mais ils présentent certains avantages par rapport aux textures dans certains cas :
Un tampon de rendu DepthStencil peut être alloué paresseusement et être soutenu par une mémoire transitoire avec certaines API. Sur certaines plateformes, cela peut signifier que le tampon de profondeur/stencil n'utilise aucun support physique.
Color Les renderbuffers sont utiles car QRhi::MultisampleRenderBuffer peut être pris en charge même si QRhi::MultisampleTexture ne l'est pas.
La manière dont le tampon de rendu est implémenté par un backend n'est pas exposée aux applications. Dans certains cas, il peut être soutenu par des textures ordinaires, tandis que dans d'autres, un autre type de ressource native peut être utilisé.
Les tampons de rendu utilisés (et uniquement utilisés) comme tampons de profondeur en combinaison avec les tampons de couleur d'un site QRhiSwapChain doivent avoir le drapeau UsedWithSwapChainOnly activé. Cela sert un double objectif : ces tampons, en fonction du backend et des API sous-jacentes, sont plus efficaces, et QRhi fournit un comportement de dimensionnement automatique pour correspondre aux tampons de couleur, ce qui signifie que l'appel à setPixelSize() et create() n'est pas nécessaire pour de tels renderbuffers.
Remarque : 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 QRhiRenderBuffer::Flag
flags QRhiRenderBuffer::Flags
Valeurs des drapeaux pour flags() et setFlags()
| Constante | Valeur | Description de la constante |
|---|---|---|
QRhiRenderBuffer::UsedWithSwapChainOnly | 1 << 0 | Pour les tampons de rendu DepthStencil, ceci indique que le tampon de rendu est uniquement utilisé en combinaison avec un QRhiSwapChain, et jamais d'une autre manière. Cela permet de dimensionner et de reconstruire automatiquement les ressources, de sorte qu'il n'est pas nécessaire d'appeler setPixelSize() ou create() lorsque ce drapeau est activé. La valeur de ce drapeau peut également déclencher un comportement spécifique au backend, par exemple avec OpenGL, lorsqu'une interface API de système de fenêtrage séparée est utilisée (EGL, GLX, etc.), le drapeau est particulièrement important car il évite de créer une ressource de tampon de rendu réelle puisqu'il existe déjà un tampon de profondeur/stencil fourni par le système de fenêtrage, comme demandé par QSurfaceFormat. |
Le type Flags est un typedef pour QFlags<Flag>. Il stocke une combinaison OU de valeurs de drapeaux.
enum QRhiRenderBuffer::Type
Spécifie le type de tampon de rendu
| Constante | Valeur | Description |
|---|---|---|
QRhiRenderBuffer::DepthStencil | 0 | Profondeur combinée/stencil |
QRhiRenderBuffer::Color | 1 | Couleur |
Fonction membre Documentation
[pure virtual] bool QRhiRenderBuffer::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.
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.
[virtual] bool QRhiRenderBuffer::createFrom(QRhiRenderBuffer::NativeRenderBuffer src)
Similaire à create() sauf qu'aucun nouvel objet de rendu natif n'est créé. Au lieu de cela, l'objet de rendu natif spécifié par src est utilisé.
Cela permet d'importer un objet renderbuffer existant (qui doit appartenir au même périphérique ou contexte de partage, en fonction de l'API graphique) à partir d'un moteur graphique externe.
Remarque : cette fonction ne s'applique actuellement qu'à OpenGL. Cette fonction existe uniquement pour permettre l'importation d'un objet renderbuffer lié à un objet externe spécial, tel qu'un EGLImageKHR. Une fois que l'application a effectué l'appel glEGLImageTargetRenderbufferStorageOES, l'objet renderbuffer peut être transmis à cette fonction pour créer un wrapping QRhiRenderBuffer, qui peut à son tour être transmis en tant qu'attachement de couleur à un QRhiTextureRenderTarget pour permettre le rendu vers l'EGLImage.
Remarque : pixelSize(), sampleCount() et flags() doivent toujours être définis correctement. Transmettre des tailles incorrectes et d'autres valeurs à QRhi::newRenderBuffer(), puis le faire suivre d'un createFrom() en pensant que l'objet renderbuffer natif suffit à déduire ces valeurs, n' est pas correct et conduira à des problèmes.
Remarque : QRhiRenderBuffer ne prend pas possession de l'objet natif, et destroy() ne libère pas cet objet.
Remarque : cette fonction n'est mise en œuvre que lorsque la caractéristique QRhi::RenderBufferImport est signalée comme étant supported. Sinon, la fonction ne fait rien et la valeur de retour est false.
Retourne true en cas de succès, false en cas de non prise en charge.
QRhiRenderBuffer::Flags QRhiRenderBuffer::flags() const
Renvoie les drapeaux.
Voir aussi setFlags().
QSize QRhiRenderBuffer::pixelSize() const
Renvoie la taille du pixel.
Voir aussi setPixelSize().
[override virtual] QRhiResource::Type QRhiRenderBuffer::resourceType() const
Réimplémente : QRhiResource::resourceType() const.
Renvoie le type de ressource.
int QRhiRenderBuffer::sampleCount() const
Renvoie le nombre d'échantillons. 1 signifie qu'il n'y a pas d'anti-crénelage multi-échantillon.
Voir aussi setSampleCount().
void QRhiRenderBuffer::setFlags(QRhiRenderBuffer::Flags f)
Définit les drapeaux à f.
Voir aussi flags().
void QRhiRenderBuffer::setPixelSize(const QSize &sz)
Définit la taille (en pixels) de sz.
Voir aussi pixelSize().
void QRhiRenderBuffer::setSampleCount(int s)
Fixe le nombre d'échantillons à s.
Voir aussi sampleCount().
void QRhiRenderBuffer::setType(QRhiRenderBuffer::Type t)
Définit le type à t.
Voir aussi type().
QRhiRenderBuffer::Type QRhiRenderBuffer::type() const
Renvoie le type de tampon de rendu.
Voir aussi setType().
© 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.