QSurfaceFormat Class
La classe `QSurfaceFormat` représente le format d'une ` QSurface`. En savoir plus...
| En-tête : | #include <QSurfaceFormat> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake : | QT += gui |
Types publics
| enum | FormatOption { StereoBuffers, DebugContext, DeprecatedFunctions, ResetNotification, ProtectedContent } |
| flags | FormatOptions |
| enum | OpenGLContextProfile { NoProfile, CoreProfile, CompatibilityProfile } |
| enum | RenderableType { DefaultRenderableType, OpenGL, OpenGLES, OpenVG } |
| enum | SwapBehavior { DefaultSwapBehavior, SingleBuffer, DoubleBuffer, TripleBuffer } |
Fonctions publiques
| QSurfaceFormat() | |
| QSurfaceFormat(QSurfaceFormat::FormatOptions options) | |
| QSurfaceFormat(const QSurfaceFormat &other) | |
| ~QSurfaceFormat() | |
| int | alphaBufferSize() const |
| int | blueBufferSize() const |
| const QColorSpace & | colorSpace() const |
| int | depthBufferSize() const |
| int | greenBufferSize() const |
| bool | hasAlpha() const |
| int | majorVersion() const |
| int | minorVersion() const |
| QSurfaceFormat::FormatOptions | options() const |
| QSurfaceFormat::OpenGLContextProfile | profile() const |
| int | redBufferSize() const |
| QSurfaceFormat::RenderableType | renderableType() const |
| int | samples() const |
| void | setAlphaBufferSize(int size) |
| void | setBlueBufferSize(int size) |
(since 6.0) void | setColorSpace(const QColorSpace &colorSpace) |
| void | setDepthBufferSize(int size) |
| void | setGreenBufferSize(int size) |
| void | setMajorVersion(int major) |
| void | setMinorVersion(int minor) |
| void | setOption(QSurfaceFormat::FormatOption option, bool on = true) |
| void | setOptions(QSurfaceFormat::FormatOptions options) |
| void | setProfile(QSurfaceFormat::OpenGLContextProfile profile) |
| void | setRedBufferSize(int size) |
| void | setRenderableType(QSurfaceFormat::RenderableType type) |
| void | setSamples(int numSamples) |
| void | setStencilBufferSize(int size) |
| void | setStereo(bool enable) |
| void | setSwapBehavior(QSurfaceFormat::SwapBehavior behavior) |
| void | setSwapInterval(int interval) |
| void | setVersion(int major, int minor) |
| int | stencilBufferSize() const |
| bool | stereo() const |
| QSurfaceFormat::SwapBehavior | swapBehavior() const |
| int | swapInterval() const |
| bool | testOption(QSurfaceFormat::FormatOption option) const |
| std::pair<int, int> | version() const |
| QSurfaceFormat & | operator=(const QSurfaceFormat &other) |
Membres publics statiques
| QSurfaceFormat | defaultFormat() |
| void | setDefaultFormat(const QSurfaceFormat &format) |
Éléments non membres associés
| bool | operator!=(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs) |
| bool | operator==(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs) |
Description détaillée
Le format inclut la taille des tampons de couleur (rouge, vert et bleu) ; la taille du tampon alpha ; la taille des tampons de profondeur et de stencil ; ainsi que le nombre d'échantillons par pixel pour le suréchantillonnage. De plus, le format contient des paramètres de configuration de surface tels que le profil et la version OpenGL pour le rendu, l'activation ou non des tampons stéréo, ainsi que le comportement d'échange.
Remarque : lors du dépannage de problèmes liés au contexte ou au format de fenêtre, il peut être utile d’activer la catégorie de journalisation « qt.qpa.gl ». Selon la plate-forme, cela peut afficher des informations de débogage utiles concernant l’initialisation d’OpenGL et les configurations natives du visuel ou du tampon de trame auxquelles QSurfaceFormat est mappé.
Documentation sur les types de membres
enum QSurfaceFormat::FormatOption
flags QSurfaceFormat::FormatOptions
Cette énumération contient des options de formatage à utiliser avec QSurfaceFormat.
| Constante | Valeur | Description |
|---|---|---|
QSurfaceFormat::StereoBuffers | 0x0001 | Permet de demander des tampons stéréo dans le format de surface. |
QSurfaceFormat::DebugContext | 0x0002 | Permet de demander un contexte de débogage avec des informations de débogage supplémentaires. |
QSurfaceFormat::DeprecatedFunctions | 0x0004 | Permet de demander que les fonctions obsolètes soient incluses dans le profil du contexte OpenGL. Si ce paramètre n’est pas spécifié, vous devriez obtenir un contexte compatible en aval sans les fonctionnalités marquées comme obsolètes. Cela nécessite la version 3.0 ou supérieure d’OpenGL. |
QSurfaceFormat::ResetNotification | 0x0008 | Active les notifications concernant les réinitialisations du contexte OpenGL. L'état peut alors être interrogé via la fonction ` isValid()` du contexte. Notez que le fait de ne pas définir cet indicateur ne garantit pas qu'aucune perte d'état du contexte ne se produira jamais. De plus, certaines implémentations peuvent choisir de signaler la perte de contexte indépendamment de cet indicateur. Les plateformes prenant en charge l’activation dynamique de la surveillance de la perte de contexte, telles que Windows avec WGL ou Linux/X11 (xcb) avec GLX, surveilleront l’état à chaque appel à ` makeCurrent()`. Voir ` isValid()` pour plus d’informations à ce sujet. |
QSurfaceFormat::ProtectedContent | 0x0010 | Active l’accès au contenu protégé. Cela permet au GPU d’opérer sur des ressources protégées (surfaces, tampons, textures), par exemple du contenu vidéo protégé par DRM. Actuellement implémenté uniquement pour EGL. |
Le type `FormatOptions` est un `typedef` pour ` QFlags<FormatOption>`. Il stocke une combinaison OR de valeurs `FormatOption`.
enum QSurfaceFormat::OpenGLContextProfile
Cette énumération sert à spécifier le profil du contexte OpenGL, en association avec les fonctions ` QSurfaceFormat::setMajorVersion()` et ` QSurfaceFormat::setMinorVersion()`.
Les profils sont disponibles dans OpenGL 3.2 et versions ultérieures, et permettent de choisir entre un profil « core » restreint et un profil de compatibilité pouvant contenir des fonctionnalités obsolètes.
Notez que le profil de base peut tout de même contenir des fonctionnalités obsolètes dont la suppression est prévue dans une version ultérieure. Pour accéder aux fonctionnalités obsolètes du profil de base dans la version d’OpenGL définie, vous pouvez utiliser l’option de format QSurfaceFormat QSurfaceFormat::DeprecatedFunctions .
| Constante | Valeur | Description |
|---|---|---|
QSurfaceFormat::NoProfile | 0 | La version d’OpenGL est inférieure à 3.2. Pour la version 3.2 et les versions plus récentes, cela revient au profil « CoreProfile ». |
QSurfaceFormat::CoreProfile | 1 | Les fonctionnalités obsolètes dans la version 3.0 d’OpenGL ne sont pas disponibles. |
QSurfaceFormat::CompatibilityProfile | 2 | Les fonctionnalités des versions antérieures d'OpenGL sont disponibles. |
enum QSurfaceFormat::RenderableType
Cette énumération spécifie le moteur de rendu de la surface.
| Constante | Valeur | Description |
|---|---|---|
QSurfaceFormat::DefaultRenderableType | 0x0 | Méthode de rendu par défaut, non spécifiée |
QSurfaceFormat::OpenGL | 0x1 | Rendu OpenGL de bureau |
QSurfaceFormat::OpenGLES | 0x2 | Rendu OpenGL ES 2.0 |
QSurfaceFormat::OpenVG | 0x4 | Rendu Open Vector Graphics |
enum QSurfaceFormat::SwapBehavior
Cette énumération est utilisée par QSurfaceFormat pour définir le comportement de permutation d'une surface. Ce comportement est pour l'essentiel transparent pour l'application, mais il influe sur des facteurs tels que la latence de rendu et le débit.
| Constante | Valeur | Description |
|---|---|---|
QSurfaceFormat::DefaultSwapBehavior | 0 | Comportement par défaut de la plate-forme, non spécifié. |
QSurfaceFormat::SingleBuffer | 1 | Utilisé pour demander une mise en mémoire tampon unique, ce qui peut entraîner un scintillement lorsque le rendu OpenGL est effectué directement à l’écran sans tampon hors écran intermédiaire. |
QSurfaceFormat::DoubleBuffer | 2 | Il s'agit généralement du comportement par défaut sur les plateformes de bureau, consistant en un tampon arrière et un tampon avant. Le rendu s'effectue dans le tampon arrière, puis le tampon arrière et le tampon avant sont échangés, ou le contenu du tampon arrière est copié dans le tampon avant, selon l'implémentation. |
QSurfaceFormat::TripleBuffer | 3 | Ce comportement d’échange est parfois utilisé afin de réduire le risque de saut d’une image lorsque la fréquence de rendu suit de justesse la fréquence de rafraîchissement de l’écran. Selon la plateforme, cela peut également conduire à une utilisation légèrement plus efficace du GPU grâce à un meilleur comportement du pipeline. La triple mise en mémoire tampon s'accompagne d'une utilisation supplémentaire d'une trame de mémoire et d'une latence accrue, et peut ne pas être prise en charge selon la plateforme sous-jacente. |
Documentation des fonctions membres
QSurfaceFormat::QSurfaceFormat()
Crée un objet `QSurfaceFormat` initialisé par défaut.
Remarque : par défaut, OpenGL 2.0 est requis, car il offre le meilleur niveau de portabilité entre les plateformes et les implémentations OpenGL.
QSurfaceFormat::QSurfaceFormat(QSurfaceFormat::FormatOptions options)
Crée un objet `QSurfaceFormat` avec le format spécifié options.
QSurfaceFormat::QSurfaceFormat(const QSurfaceFormat &other)
Crée une copie de other.
[noexcept] QSurfaceFormat::~QSurfaceFormat()
Supprime l'QSurfaceFormat.
int QSurfaceFormat::alphaBufferSize() const
Récupère la taille, en bits, du canal alpha du tampon de couleurs.
Voir également setAlphaBufferSize().
int QSurfaceFormat::blueBufferSize() const
Récupère la taille, en bits, du canal bleu du tampon de couleur.
Voir également la fonction ` setBlueBufferSize()`.
const QColorSpace &QSurfaceFormat::colorSpace() const
Renvoie l'espace colorimétrique.
Voir aussi setColorSpace().
[static] QSurfaceFormat QSurfaceFormat::defaultFormat()
Renvoie le format de surface par défaut global.
Lorsque la fonction setDefaultFormat() n'est pas appelée, il s'agit d'un objet QSurfaceFormat construit par défaut.
Voir également setDefaultFormat().
int QSurfaceFormat::depthBufferSize() const
Renvoie la taille du tampon de profondeur.
Voir aussi ` setDepthBufferSize()`.
int QSurfaceFormat::greenBufferSize() const
Récupère la taille, en bits, du canal vert du tampon de couleurs.
Voir également la fonction ` setGreenBufferSize()`.
bool QSurfaceFormat::hasAlpha() const
Renvoie « true » si la taille du tampon alpha est supérieure à zéro.
Cela signifie que la surface peut être utilisée avec des effets de translucidité par pixel.
int QSurfaceFormat::majorVersion() const
Renvoie la version principale d'OpenGL.
La version par défaut est 2.0.
Voir aussi setMajorVersion().
int QSurfaceFormat::minorVersion() const
Renvoie la version mineure d'OpenGL.
Voir également setMinorVersion().
QSurfaceFormat::FormatOptions QSurfaceFormat::options() const
Renvoie les options de formatage actuellement définies.
Voir également setOption(), setOptions() et testOption().
QSurfaceFormat::OpenGLContextProfile QSurfaceFormat::profile() const
Récupère le profil du contexte OpenGL configuré.
Ce paramètre est ignoré si la version OpenGL demandée est inférieure à 3.2.
Voir également setProfile().
int QSurfaceFormat::redBufferSize() const
Récupère la taille en bits du canal rouge du tampon de couleur.
Voir également la fonction ` setRedBufferSize()`.
QSurfaceFormat::RenderableType QSurfaceFormat::renderableType() const
Récupère le type de rendu.
Permet de choisir entre OpenGL pour ordinateur de bureau, OpenGL ES et OpenVG.
Voir aussi setRenderableType().
int QSurfaceFormat::samples() const
Renvoie le nombre d'échantillons par pixel lorsque le multisampling est activé, ou -1 lorsque le multisampling est désactivé. La valeur de retour par défaut est -1.
Voir également setSamples().
void QSurfaceFormat::setAlphaBufferSize(int size)
Définit l'size e souhaitée en bits du canal alpha du tampon de couleur.
Voir aussi alphaBufferSize().
void QSurfaceFormat::setBlueBufferSize(int size)
Définissez l'size e souhaitée en bits du canal bleu du tampon de couleur.
Voir aussi blueBufferSize().
[since 6.0] void QSurfaceFormat::setColorSpace(const QColorSpace &colorSpace)
Définit l'colorSpace e préféré.
Cela permet, par exemple, de demander des fenêtres dont les framebuffers par défaut prennent en charge le profil sRGB sur les plateformes qui le permettent.
Remarque : lorsque l’espace colorimétrique demandé n’est pas pris en charge par la plate-forme, la requête est ignorée. Interrogez l’ QSurfaceFormat après la création de la fenêtre pour vérifier si la requête d’espace colorimétrique a pu être satisfaite ou non.
Remarque : ce paramètre détermine si le framebuffer par défaut de la fenêtre est capable d’effectuer des mises à jour et des mélanges dans un espace colorimétrique donné. Il ne modifie pas en soi la sortie des applications. Le code de rendu des applications devra toujours activer cette fonctionnalité via les appels OpenGL appropriés pour permettre aux mises à jour et aux mélanges d’être effectués dans l’espace colorimétrique donné, au lieu d’utiliser les opérations linéaires standard.
Cette fonction a été introduite dans Qt 6.0.
Voir également ` colorSpace()`.
[static] void QSurfaceFormat::setDefaultFormat(const QSurfaceFormat &format)
Définit l'format par défaut de la surface globale.
Ce format est utilisé par défaut dans les classes QOpenGLContext, QWindow, QOpenGLWidget et autres classes similaires.
Il peut toujours être redéfini au cas par cas à l’aide de la fonction setFormat() propre à la classe concernée. Cependant, il est souvent plus pratique de définir le format pour toutes les fenêtres en une seule fois au démarrage de l’application. Cela garantit également un comportement correct dans les cas où des contextes partagés sont nécessaires, car la définition du format via cette fonction garantit que tous les contextes et toutes les surfaces, même ceux créés en interne par Qt, utiliseront le même format.
Voir également ` defaultFormat()`.
void QSurfaceFormat::setDepthBufferSize(int size)
Définissez la taille minimale du tampon de profondeur sur size.
Voir également depthBufferSize().
void QSurfaceFormat::setGreenBufferSize(int size)
Définissez l'size souhaitée en bits du canal vert du tampon de couleurs.
Voir aussi greenBufferSize().
void QSurfaceFormat::setMajorVersion(int major)
Définit la version OpenGL souhaitée pour l'major.
Voir aussi majorVersion().
void QSurfaceFormat::setMinorVersion(int minor)
Définit la version OpenGL souhaitée pour l'minor.
La version par défaut est 2.0.
Voir aussi minorVersion().
void QSurfaceFormat::setOption(QSurfaceFormat::FormatOption option, bool on = true)
Définit l'option de format « option » si « on » est vrai ; sinon, désactive cette option.
Pour vérifier qu’une option a bien été respectée, comparez le format réel au format demandé après la création de la surface ou du contexte.
Voir également setOptions(), options() et testOption().
void QSurfaceFormat::setOptions(QSurfaceFormat::FormatOptions options)
Définit les options de format sur « options ».
Pour vérifier qu'une option a bien été respectée, comparez le format réel au format demandé après la création de la surface ou du contexte.
Voir également options() et testOption().
void QSurfaceFormat::setProfile(QSurfaceFormat::OpenGLContextProfile profile)
Définit le contexte OpenGL souhaité profile.
Ce paramètre est ignoré si la version OpenGL demandée est inférieure à 3.2.
Voir également profile().
void QSurfaceFormat::setRedBufferSize(int size)
Définissez l'size e souhaitée en bits du canal rouge du tampon de couleur.
Voir aussi redBufferSize().
void QSurfaceFormat::setRenderableType(QSurfaceFormat::RenderableType type)
Définit l'type souhaitée pour le rendu.
Permet de choisir entre OpenGL pour ordinateur de bureau, OpenGL ES et OpenVG.
Voir également renderableType().
void QSurfaceFormat::setSamples(int numSamples)
Définissez le nombre souhaité d'échantillons par pixel lorsque le multisampling est activé à l'adresse numSamples. Par défaut, le multisampling est désactivé.
Voir également samples().
void QSurfaceFormat::setStencilBufferSize(int size)
Définissez la taille souhaitée du tampon de pochoir à size bits.
Voir également stencilBufferSize().
void QSurfaceFormat::setStereo(bool enable)
Si la valeur « enable » est définie sur « true », la mise en mémoire tampon stéréo est activée ; dans le cas contraire, elle est désactivée.
La mise en mémoire tampon stéréo est désactivée par défaut.
La mise en mémoire tampon stéréo fournit des tampons de couleur supplémentaires pour générer les images destinées à l'œil gauche et à l'œil droit.
Voir également stereo().
void QSurfaceFormat::setSwapBehavior(QSurfaceFormat::SwapBehavior behavior)
Définit l'behavior de swap de la surface.
Le comportement de swap permet de spécifier si l'on souhaite un buffering simple, double ou triple. La valeur par défaut, ` DefaultSwapBehavior`, correspond au comportement de swap par défaut de la plate-forme.
Voir également swapBehavior().
void QSurfaceFormat::setSwapInterval(int interval)
Définit l'intervalle de permutation souhaité. L'intervalle de permutation spécifie le nombre minimum d'images vidéo affichées avant qu'une permutation de tampon n'ait lieu. Cela permet de synchroniser le dessin GL dans une fenêtre avec le rafraîchissement vertical de l'écran.
Si vous définissez la valeur « interval » sur 0, la synchronisation avec le rafraîchissement vertical est désactivée ; toute valeur supérieure à 0 active la synchronisation verticale. Si vous définissez « interval » sur une valeur plus élevée, par exemple 10, cela entraîne 10 retraces verticaux entre chaque permutation de tampon.
L’intervalle par défaut est 1.
La modification de l’intervalle de permutation peut ne pas être prise en charge par la plate-forme sous-jacente. Dans ce cas, la requête sera ignorée sans message d’erreur.
Voir également swapInterval().
void QSurfaceFormat::setVersion(int major, int minor)
Définit les versions OpenGL souhaitées pour les fonctions « major » et « minor ».
La version par défaut est 2.0.
Voir aussi version().
int QSurfaceFormat::stencilBufferSize() const
Renvoie la taille du tampon de stencil en bits.
Voir aussi setStencilBufferSize().
bool QSurfaceFormat::stereo() const
Renvoie « true » si la mise en mémoire tampon stéréo est activée ; sinon, renvoie « false ». La mise en mémoire tampon stéréo est désactivée par défaut.
Voir aussi setStereo().
QSurfaceFormat::SwapBehavior QSurfaceFormat::swapBehavior() const
Renvoie le comportement de swap configuré.
Voir également setSwapBehavior().
int QSurfaceFormat::swapInterval() const
Renvoie l'intervalle de swap.
Voir aussi setSwapInterval().
bool QSurfaceFormat::testOption(QSurfaceFormat::FormatOption option) const
Renvoie « true » si l'option de format option est activée ; sinon, renvoie « false ».
Voir aussi options().
std::pair<int, int> QSurfaceFormat::version() const
Renvoie un std::pair<int, int> représentant la version d'OpenGL.
Utile pour vérifier la version, par exemple : format.version() >= std::pair(3, 2)
Voir également setVersion().
QSurfaceFormat &QSurfaceFormat::operator=(const QSurfaceFormat &other)
Attribue la propriété « other » à cet objet.
Non-membres associés
[noexcept] bool operator!=(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs)
Renvoie « false » si toutes les options des deux objets « QSurfaceFormat » ( lhs et rhs ) sont identiques ; sinon, renvoie « true ».
[noexcept] bool operator==(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs)
Renvoie « true » si toutes les options des deux objets « QSurfaceFormat » lhs et rhs sont identiques.
© 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.