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

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 une cartographie tonale compatible HDR, où la plage cible n'est pas [0,1], on a souvent besoin de connaître la luminance maximale de l'écran auquel la fenêtre de la chaîne d'échange est associée. Bien que cela soit souvent configuré par l'utilisateur (pensez à la luminosité, au gamma et aux paramètres similaires dans les jeux), il peut être très utile de définir des valeurs par défaut basées sur les valeurs rapportées par l'écran lui-même, fournissant ainsi un point de départ décent.

Il y a cependant quelques problèmes : les informations sont exposées sous différentes formes selon les plateformes, alors qu'avec les API graphiques multiplateformes, il n'y a souvent aucune solution associée, car la gestion de ces informations ne fait pas partie du champ d'application de l'API (et peut plutôt être récupérée par d'autres moyens spécifiques à la plateforme, s'il y en a).

Avec Metal sur macOS/iOS, il n'y a pas de valeurs de luminance exposées dans les API de la plateforme. À la place, la valeur maximale de la composante de couleur, qui serait de 1,0 dans une configuration non HDR, est fournie. Le champ limitsType indique le type d'informations disponibles. Il appartient ensuite aux clients de QRhi d'accéder aux données correctes de l'union limits et de les utiliser comme ils l'entendent.

Avec une API comme Vulkan, où il n'y a aucun moyen d'obtenir de telles informations, les valeurs sont toujours les valeurs par défaut intégrées.

Par conséquent, la structure renvoyée par 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 plate-forme n'est disponible (ou que les besoins utilisent des installations de plate-forme hors de portée de QRhi), les valeurs par défaut codées en dur sont une luminance maximale de 1000 nits et un niveau de blanc SDR de 200.

La structure expose également le comportement présumé de la luminance de la plate-forme et de son compositeur, pour indiquer ce qu'une valeur de composante de couleur de 1,0 est traitée dans un tampon de couleur HDR. Dans certains cas, il sera nécessaire d'effectuer une correction des couleurs d'un contenu non HDR composé avec un contenu HDR. Pour ce faire, le niveau de blanc SDR est demandé au système sur certaines plateformes (Windows) et exposé ici.

Remarque : il s'agit d'une API RHI avec des garanties de compatibilité limitées, voir QRhi pour plus de détails.

Voir également QRhiSwapChain::hdrInfo().

Documentation sur les types de membres

enum QRhiSwapChainHdrInfo::LimitsType

ConstanteValeurDescription
QRhiSwapChainHdrInfo::LuminanceInNits0Indique que l'union limits a son ensemble de structures luminanceInNits
QRhiSwapChainHdrInfo::ColorComponentValue1Indique que l'union limits a son ensemble de structures colorComponentValue

enum QRhiSwapChainHdrInfo::LuminanceBehavior

ConstanteValeurDescription
QRhiSwapChainHdrInfo::SceneReferred0Indique que la valeur de couleur de 1,0 est interprétée comme 80 nits. C'est le comportement des fenêtres HDR avec le compositeur Windows. Voir cette page pour plus d'informations sur le HDR sous Windows.
QRhiSwapChainHdrInfo::DisplayReferred1Indique que la valeur de couleur de 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). Voir 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 demandées à l'API graphique ou à la plate-forme. 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. L'augmentation de la luminosité entraîne une diminution de la luminance maximale. En outre, les résultats peuvent également dépendre de la luminosité du contenu HDR définie dans la vue Système/Affichage/HDR des paramètres Windows, le cas échéant.

Notez toutefois que les modifications apportées à la luminosité de l'écran de l'ordinateur portable ou aux paramètres du système pendant l'exécution de l'application ne sont pas nécessairement reflétées dans les valeurs renvoyées, ce qui signifie que le fait de rappeler hdrInfo() peut toujours renvoyer la même plage de luminance qu'auparavant pour le reste de la durée de vie du processus. Le comportement exact dépend de DXGI et Qt n'a aucun contrôle dessus.

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

Pour macOS/iOS, les valeurs maximales actuelles et 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'EDR d'Apple se réfère à l'affichage. 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 cette luminance, ou la luminance maximale de l'écran, n'est pas exposée aux applications.

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

Voir également QRhiSwapChain::hdrInfo().

QRhiSwapChainHdrInfo::LimitsType QRhiSwapChainHdrInfo::limitsType

Avec Metal sur macOS/iOS, il n'y a pas de valeurs de luminance exposées dans les API de la plateforme. À la place, la valeur maximale de la composante de couleur, qui serait de 1,0 dans une configuration non HDR, est fournie. Cette valeur indique le type d'informations disponibles sur limits.

Voir également QRhiSwapChain::hdrInfo().

QRhiSwapChainHdrInfo::LuminanceBehavior QRhiSwapChainHdrInfo::luminanceBehavior

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

Voir aussi sdrWhiteLevel.

float QRhiSwapChainHdrInfo::sdrWhiteLevel

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

Pour effectuer une correction du niveau de blanc pour le contenu non HDR (SDR), tel que les éléments 2D de l'interface utilisateur, multipliez la couleur finale par sdrWhiteLevel / 80.0 lorsque luminanceBehavior est SceneReferred(en supposant que Windows et un espace colorimétrique linéaire sRGB étendu (scRGB)).

Sur d'autres plateformes, la valeur est toujours une valeur prédéfinie, 200. Cette valeur peut ne pas correspondre au niveau de blanc SDR réel du système, mais la valeur de cette variable n'est pas pertinente dans la pratique lorsque luminanceBehavior est DisplayReferred, car la valeur de la composante couleur de 1,0 se réfère alors au blanc SDR par défaut.

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.