Sur cette page

QRhiSwapChainHdrInfo Struct

Décrit les informations relatives à la plage dynamique élevée de la sortie associée à la chaîne d'échange. 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

Types publics

enum LimitsType { LuminanceInNits, ColorComponentValue }
enum LuminanceBehavior { SceneReferred, DisplayReferred }

Variables publiques

union QRhiSwapChainHdrInfo::(unnamed union) limits
QRhiSwapChainHdrInfo::LimitsType limitsType
QRhiSwapChainHdrInfo::LuminanceBehavior luminanceBehavior
float sdrWhiteLevel

Description détaillée

Pour effectuer un tonemapping compatible HDR, où la plage cible n'est pas [0,1], il est souvent nécessaire de connaître la luminance maximale de l'écran auquel la fenêtre du swapchain est associée. Bien que ce paramètre soit souvent configurable par l’utilisateur (pensez à la luminosité, au gamma et aux réglages similaires dans les jeux), il peut s’avérer très utile de définir des valeurs par défaut basées sur celles fournies par l’écran lui-même, offrant ainsi un bon point de départ.

Il existe toutefois quelques problèmes : ces informations sont exposées sous différentes formes selon les plateformes, tandis qu’avec les API graphiques multiplateformes, il n’existe souvent aucune solution associée, car la gestion de ces informations ne relève pas du champ d’application de l’API (et peut plutôt être récupérée via d’autres moyens spécifiques à la plateforme, le cas échéant).

Avec Metal sur macOS/iOS, aucune valeur de luminance n’est exposée dans les API de la plateforme. À la place, c’est la valeur maximale de la composante de couleur, qui serait de 1,0 dans une configuration non HDR, qui est fournie. Le champ « limitsType » indique le type d’informations disponibles. Il appartient alors aux clients d’ QRhi d’accéder aux données appropriées à partir de l’union « limits » et de les utiliser comme bon leur semble.

Avec une API telle que Vulkan, où il n’existe aucun moyen d’obtenir ces informations, les valeurs sont toujours les valeurs par défaut intégrées.

Par conséquent, la structure renvoyée par la fonction QRhiSwapChain::hdrInfo() contient soit des valeurs par défaut codées en dur, soit des valeurs réelles reçues d’une API telle que DXGI (IDXGIOutput6) ou Cocoa (NSScreen). Lorsqu’aucune requête de plateforme n’est disponible (ou que cela nécessite d’utiliser des fonctionnalités de la plateforme hors du champ d’application d’ QRhi), les valeurs par défaut codées en dur sont une luminance maximale de 1 000 nits et un niveau de blanc SDR de 200.

La structure expose également le comportement présumé de la plateforme et de son compositeur en matière de luminance, afin d’indiquer comment une valeur de composante de couleur égale à 1,0 est traitée dans un tampon de couleur HDR. Dans certains cas, il sera nécessaire d’effectuer une correction des couleurs du contenu non HDR composité avec du contenu HDR. Pour cela, le niveau de blanc SDR est interrogé auprès du système sur certaines plateformes (Windows) et exposé ici.

Remarque : il s’agit d’une API RHI dont la compatibilité est garantie de manière limitée ; voir QRhi pour plus de détails.

Voir également QRhiSwapChain::hdrInfo().

Documentation sur les types de membres

enum QRhiSwapChainHdrInfo::LimitsType

ConstanteValeurDescription
QRhiSwapChainHdrInfo::LuminanceInNits0Indique que la structure luminanceInNits de l'union limits est définie
QRhiSwapChainHdrInfo::ColorComponentValue1Indique que la structure « colorComponentValue » de l’union « limits » est définie

enum QRhiSwapChainHdrInfo::LuminanceBehavior

ConstanteValeurDescription
QRhiSwapChainHdrInfo::SceneReferred0Indique que la valeur de couleur 1,0 est interprétée comme 80 nits. C'est le comportement des fenêtres compatibles HDR avec le compositeur Windows. Consultez cette page pour plus d'informations sur le HDR sous Windows.
QRhiSwapChainHdrInfo::DisplayReferred1Indique que la valeur de couleur 1,0 est interprétée comme la valeur du blanc SDR. (qui peut être, par exemple, de 200 nits, mais qui varie en fonction de la luminosité de l'écran) Il s'agit du comportement des fenêtres compatibles HDR sur les plateformes Apple. Consultez cette page pour plus d'informations sur le système EDR d'Apple.

Documentation sur les variables membres

union QRhiSwapChainHdrInfo::(unnamed union) QRhiSwapChainHdrInfo::limits

Contient les valeurs réelles récupérées via l'API graphique ou la plateforme. Le type de données est indiqué par limitsType. Il s'agit donc d'une union. Il existe actuellement deux options :

Valeurs de luminance en nits :

struct {
    float minLuminance;
    float maxLuminance;
} luminanceInNits;

Sous Windows, la luminance minimale et maximale dépend de la luminosité de l'écran. Bien que cela ne soit pas pertinent pour les ordinateurs de bureau, sur les ordinateurs portables, la luminosité de l'écran peut changer à tout moment. Une augmentation de la luminosité implique une diminution de la luminance maximale. De plus, les résultats peuvent également dépendre de la luminosité du contenu HDR définie dans les paramètres Windows, sous Système/Affichage/HDR, si un tel paramètre existe.

Notez toutefois que les modifications apportées à la luminosité de l’écran de l’ordinateur portable ou dans les paramètres système pendant l’exécution de l’application ne se répercutent pas nécessairement sur les valeurs renvoyées, ce qui signifie qu’un nouvel appel à hdrInfo() peut encore renvoyer la même plage de luminance qu’auparavant pendant le reste de la durée de vie du processus. Le comportement exact dépend de DXGI et Qt n’a aucun contrôle sur celui-ci.

Remarque : le compositeur Windows fonctionne en mode « scene-referred » pour le contenu HDR. Une valeur de composante de couleur égale à 1,0 correspond à une luminance de 80 nits. Lors du rendu de contenu non HDR (par exemple, des éléments d’interface utilisateur 2D), une correction du niveau de blanc est souvent nécessaire. (Par exemple, l’affichage de la couleur de fragment (1, 1, 1) conduira probablement à l’affichage d’une nuance de blanc trop terne à l’écran.) Voir sdrWhiteLevel.

Pour macOS/iOS, les valeurs maximales actuelles et maximales potentielles des composantes de couleur sont fournies :

struct {
    float maxColorComponentValue;
    float maxPotentialColorComponentValue;
} colorComponentValue;

La valeur peut dépendre de la luminosité de l’écran, ce qui, sur les ordinateurs portables, signifie que le résultat peut changer lors du prochain appel à hdrInfo() si la luminosité a été modifiée entre-temps. La luminosité maximale de l’écran implique une valeur de couleur maximale de 1,0.

Remarque : l’EDRd’Apple est référencé par rapport à l’écran. 1,0 correspond à un niveau de luminance du blanc SDR (par exemple 200 nits), dont la valeur varie en fonction de la luminosité de l’écran et éventuellement d’autres paramètres. La valeur exacte de la luminance correspondante, ou la luminance maximale de l’écran, n’est pas communiquée aux applications.

Remarque : il a été observé que, sur certains systèmes macOS, les valeurs des composantes de couleur ne sont pas immédiatement définies sur la valeur correcte supérieure à 1 au démarrage, mais elles ont tendance à changer pendant ou après la première image.

Voir également QRhiSwapChain::hdrInfo().

QRhiSwapChainHdrInfo::LimitsType QRhiSwapChainHdrInfo::limitsType

Avec Metal sur macOS/iOS, les API de la plateforme ne fournissent pas de valeurs de luminance. À la place, elles fournissent la valeur maximale de la composante de couleur, qui serait de 1,0 dans une configuration non HDR. Cette valeur indique le type d’informations disponibles dans ` limits`.

Voir également QRhiSwapChain::hdrInfo().

QRhiSwapChainHdrInfo::LuminanceBehavior QRhiSwapChainHdrInfo::luminanceBehavior

Décrit le comportement présumé de la plateforme en ce qui concerne les valeurs de couleur.

Voir également sdrWhiteLevel.

float QRhiSwapChainHdrInfo::sdrWhiteLevel

Sous Windows, il s'agit du niveau de blanc SDR dynamique exprimé en nits. Cette valeur dépend de la luminosité de l'écran (sur les ordinateurs portables) et des paramètres de luminosité du contenu SDR ou HDR disponibles dans la section Système/Affichage/HDR des paramètres Windows.

Pour effectuer une correction du niveau de blanc sur du contenu non HDR (SDR), tel que les éléments d’interface utilisateur 2D, multipliez la couleur finale par sdrWhiteLevel / 80,0 lorsque luminanceBehavior vaut SceneReferred. (en supposant que vous utilisiez Windows et un espace colorimétrique sRGB étendu linéaire (scRGB))

Sur les autres plateformes, la valeur est toujours prédéfinie à 200. Elle peut ne pas correspondre au niveau de blanc SDR réel du système, mais la valeur de cette variable n’a en pratique aucune importance lorsque la variable « luminanceBehavior » est définie sur « DisplayReferred », car dans ce cas, la valeur de 1,0 de la composante de couleur fait référence par défaut au blanc SDR.

Voir également luminanceBehavior.

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