QRhiSwapChainHdrInfo Struct
Describe la información relacionada con el alto rango dinámico de la salida asociada a la swapchain. Más...
| Cabecera: | #include <rhi/qrhi.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS GuiPrivate)target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate) |
| qmake: | QT += gui-private |
| Desde: | Qt 6.6 |
Tipos Públicos
| enum | LimitsType { LuminanceInNits, ColorComponentValue } |
| enum | LuminanceBehavior { SceneReferred, DisplayReferred } |
Variables Públicas
| union QRhiSwapChainHdrInfo::(unnamed union) | limits |
| QRhiSwapChainHdrInfo::LimitsType | limitsType |
| QRhiSwapChainHdrInfo::LuminanceBehavior | luminanceBehavior |
| float | sdrWhiteLevel |
Descripción detallada
Para realizar un mapeado tonal compatible con HDR, donde el rango objetivo no es [0,1], a menudo es necesario conocer la luminancia máxima de la pantalla a la que está asociada la ventana del swapchain. Aunque a menudo esto es configurable por el usuario (piense en el brillo, gamma y ajustes similares en los juegos), puede ser muy útil establecer valores por defecto basados en los valores reportados por la propia pantalla, proporcionando así un punto de partida decente.
Sin embargo, hay algunos problemas: la información se expone de diferentes formas en las distintas plataformas, mientras que con las API gráficas multiplataforma a menudo no hay ninguna solución asociada, porque la gestión de dicha información no está en el ámbito de la API (y puede ser más bien recuperable a través de otros medios específicos de la plataforma, si los hay).
Con Metal en macOS/iOS, no hay valores de luminancia expuestos en las API de la plataforma. En su lugar, se proporciona el valor máximo del componente de color, que sería 1,0 en una configuración no HDR. El campo limitsType indica qué tipo de información está disponible. Corresponde entonces a los clientes de QRhi acceder a los datos correctos de la unión limits y utilizarlos como consideren oportuno.
Con una API como Vulkan, en la que no hay forma de obtener esa información, los valores son siempre los predeterminados.
Por lo tanto, la estructura devuelta por QRhiSwapChain::hdrInfo() contiene valores predeterminados o valores reales recibidos de una API como DXGI (IDXGIOutput6) o Cocoa (NSScreen). Cuando no se dispone de consultas de plataforma (o cuando se necesitan utilizar funciones de plataforma fuera del alcance de QRhi), los valores predeterminados son una luminancia máxima de 1.000 nits y un nivel de blanco SDR de 200. La estructura también expone los valores predeterminados presumiblemente recibidos de una API como DXGI (IDXGIOutput6) o Cocoa (NSScreen).
La estructura también expone el supuesto comportamiento de luminancia de la plataforma y su compositor, para indicar cómo se trata un valor de componente de color de 1,0 en un búfer de color HDR. En algunos casos será necesario realizar la corrección de color de contenido no HDR compuesto con contenido HDR. Para ello, en algunas plataformas (Windows) el nivel de blanco SDR se consulta al sistema y se expone aquí.
Nota: Se trata de una API RHI con garantías de compatibilidad limitadas, véase QRhi para más detalles.
Véase también QRhiSwapChain::hdrInfo().
Documentación de tipos de miembros
enum QRhiSwapChainHdrInfo::LimitsType
| Constante | Valor | Descripción |
|---|---|---|
QRhiSwapChainHdrInfo::LuminanceInNits | 0 | Indica que la unión limits tiene su luminanceInNits struct set |
QRhiSwapChainHdrInfo::ColorComponentValue | 1 | Indica que la unión limits tiene su colorComponentValue struct set |
enum QRhiSwapChainHdrInfo::LuminanceBehavior
| Constante | Valor | Descripción |
|---|---|---|
QRhiSwapChainHdrInfo::SceneReferred | 0 | Indica que el valor de color de 1.0 se interpreta como 80 nits. Este es el comportamiento de las ventanas habilitadas para HDR con el compositor de Windows. Consulte esta página para obtener más información sobre HDR en Windows. |
QRhiSwapChainHdrInfo::DisplayReferred | 1 | Indica que el valor de color de 1,0 se interpreta como el valor del blanco SDR (que puede ser, por ejemplo, 200 nits, pero variará en función del brillo de la pantalla) Este es el comportamiento de las ventanas habilitadas para HDR en plataformas Apple. Consulte esta página para obtener más información sobre el sistema EDR de Apple. |
Documentación de la variable miembro
union QRhiSwapChainHdrInfo::(unnamed union) QRhiSwapChainHdrInfo::limits
Contiene los valores reales consultados a la API gráfica o a la plataforma. El tipo de datos se indica mediante limitsType. Se trata, por tanto, de una unión. Actualmente existen dos opciones:
Valores de luminancia en nits:
struct { float minLuminance; float maxLuminance; } luminanceInNits;
En Windows la luminancia mínima y máxima depende del brillo de la pantalla. Aunque no es relevante para ordenadores de sobremesa, en portátiles el brillo de la pantalla puede cambiar en cualquier momento. Aumentar el brillo implica disminuir la luminancia máxima. Además, los resultados también pueden depender del Brillo del contenido HDR configurado en la vista Sistema/Pantalla/HDR de la Configuración de Windows, si existe tal configuración.
Tenga en cuenta, sin embargo, que los cambios realizados en el brillo de la pantalla del portátil o en la configuración del sistema mientras se ejecuta la aplicación no se reflejan necesariamente en los valores devueltos, lo que significa que volver a llamar a hdrInfo() puede seguir devolviendo el mismo rango de luminancia que antes durante el resto de la vida del proceso. El comportamiento exacto depende de DXGI y Qt no tiene control sobre él.
Nota: El compositor de Windows trabaja en modo referido a la escena para contenidos HDR. Un valor de componente de color de 1.0 corresponde a una luminancia de 80 nits. Al renderizar contenido no HDR (por ejemplo, elementos de interfaz de usuario 2D), a menudo es necesario corregir el nivel de blanco. (Por ejemplo, la salida del color del fragmento (1, 1, 1) probablemente conducirá a mostrar un tono de blanco demasiado tenue en pantalla) Véase sdrWhiteLevel.
Para macOS/iOS, se proporcionan los valores máximo actual y máximo potencial del componente de color:
struct { float maxColorComponentValue; float maxPotentialColorComponentValue; } colorComponentValue;
El valor puede depender del brillo de la pantalla, lo que en portátiles significa que el resultado puede cambiar en la siguiente llamada a hdrInfo() si el brillo se ha modificado entretanto. El brillo máximo de la pantalla implica un valor de color máximo de 1,0.
Nota: El EDR de Apple está referido a la pantalla. 1.0 corresponde a un nivel de luminancia de blanco SDR (por ejemplo, 200 nits), cuyo valor varía en función del brillo de la pantalla y posiblemente de otros ajustes. El valor exacto de esa luminancia, o la luminancia máxima de la pantalla, no se exponen en las aplicaciones.
Nota: Se ha observado que los valores de los componentes de color no se establecen en el valor correcto mayor que 1 de inmediato en el arranque en algunos sistemas macOS, sino que los valores tienden a cambiar durante o después del primer fotograma.
Véase también QRhiSwapChain::hdrInfo().
QRhiSwapChainHdrInfo::LimitsType QRhiSwapChainHdrInfo::limitsType
Con Metal en macOS/iOS, no hay valores de luminancia expuestos en las API de la plataforma. En su lugar, se proporciona el valor máximo del componente de color, que sería 1,0 en una configuración no HDR. Este valor indica qué tipo de información está disponible en limits.
Véase también QRhiSwapChain::hdrInfo().
QRhiSwapChainHdrInfo::LuminanceBehavior QRhiSwapChainHdrInfo::luminanceBehavior
Describe el comportamiento supuesto de la plataforma con respecto a los valores de color.
Véase también sdrWhiteLevel.
float QRhiSwapChainHdrInfo::sdrWhiteLevel
En Windows es el nivel de blanco dinámico SDR en nits. El valor depende del brillo de la pantalla (en portátiles) y de los ajustes de Brillo del contenido SDR o HDR en la vista Sistema/Pantalla/HDR de los ajustes de Windows.
Para realizar la corrección del nivel de blanco para contenidos no HDR (SDR), como elementos de interfaz de usuario 2D, multiplique el color final por sdrWhiteLevel / 80.0 siempre que luminanceBehavior sea SceneReferred. (suponiendo Windows y un espacio de color sRGB (scRGB) lineal extendido).
En otras plataformas el valor es siempre un valor predefinido, 200. Esto puede no coincidir con el nivel de blanco SDR real del sistema, pero el valor de esta variable no es relevante en la práctica cuando luminanceBehavior es DisplayReferred, porque entonces el valor del componente de color de 1.0 se refiere al blanco SDR por defecto.
Véase también 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.