QRhiSwapChainHdrInfo Struct
스왑체인에 연결된 출력의 고동적 범위(HDR) 관련 정보를 설명합니다. 더 보기...
| 헤더: | #include <rhi/qrhi.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS GuiPrivate) target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate) |
| qmake: | QT += gui-private |
| 다음부터: | Qt 6.6부터 |
공개 유형
| enum | LimitsType { LuminanceInNits, ColorComponentValue } |
| enum | LuminanceBehavior { SceneReferred, DisplayReferred } |
공개 변수
| union QRhiSwapChainHdrInfo::(unnamed union) | limits |
| QRhiSwapChainHdrInfo::LimitsType | limitsType |
| QRhiSwapChainHdrInfo::LuminanceBehavior | luminanceBehavior |
| float | sdrWhiteLevel |
상세 설명
대상 범위가 [0,1]이 아닌 HDR 호환 톤 매핑을 수행하려면, 스왑 체인의 창이 연결된 디스플레이의 최대 휘도를 알아야 하는 경우가 많습니다. 이 설정은 대개 사용자가 직접 구성할 수 있게 되어 있지만(게임의 밝기, 감마 및 이와 유사한 설정을 생각해보세요), 디스플레이 자체에서 보고하는 값을 기반으로 기본값을 설정하여 적절한 시작점을 제공하는 것이 매우 유용할 수 있습니다.
그러나 몇 가지 문제가 있습니다. 플랫폼에 따라 정보가 노출되는 형식이 다르며, 크로스 플랫폼 그래픽 API의 경우 이러한 정보를 관리하는 것이 API의 범위에 포함되지 않기 때문에(있는 경우 다른 플랫폼별 수단을 통해 검색할 수 있음) 관련 솔루션이 아예 없는 경우가 많습니다.
macOS/iOS의 Metal의 경우, 플랫폼 API에 휘도 값이 노출되어 있지 않습니다. 대신, 비 HDR 설정에서 1.0이 되는 최대 색상 구성 요소 값이 제공됩니다. limitsType 필드는 어떤 종류의 정보를 사용할 수 있는지를 나타냅니다. 이후 QRhi 의 클라이언트는 limits 연합체에서 올바른 데이터에 접근하여 필요에 따라 이를 활용해야 합니다.
Vulkan과 같이 이러한 정보를 얻을 방법이 없는 API의 경우, 값은 항상 내장된 기본값으로 설정됩니다.
따라서 QRhiSwapChain::hdrInfo()에서 반환되는 구조체에는 하드코딩된 기본값이나 DXGI(IDXGIOutput6) 또는 Cocoa(NSScreen)와 같은 API에서 수신된 실제 값이 포함됩니다. 플랫폼 쿼리를 사용할 수 없는 경우(또는 QRhi 의 범위를 벗어난 플랫폼 기능을 사용해야 하는 경우), 하드코딩된 기본값은 최대 휘도 1000니트 및 SDR 백색 레벨 200입니다.
또한 이 구조체는 플랫폼과 컴포지터의 예상되는 휘도 동작을 노출하여, HDR 색상 버퍼에서 색상 구성 요소 값 1.0이 어떻게 처리되는지 나타냅니다. 경우에 따라 HDR 콘텐츠와 합성된 비-HDR 콘텐츠에 대해 색상 보정을 수행해야 할 수도 있습니다. 이를 지원하기 위해 일부 플랫폼(Windows)에서는 시스템으로부터 SDR 백색 레벨을 조회하여 여기에 노출합니다.
참고: 이 RHI API는 호환성 보장이 제한적입니다. 자세한 내용은 QRhi 를 참조하십시오.
QRhiSwapChain::hdrInfo()도 참조하십시오 .
멤버 유형 문서
enum QRhiSwapChainHdrInfo::LimitsType
| 상수 | 값 | 설명 |
|---|---|---|
QRhiSwapChainHdrInfo::LuminanceInNits | 0 | limits 연합체에 luminanceInNits 구조체가 설정되어 있음을 나타냅니다 |
QRhiSwapChainHdrInfo::ColorComponentValue | 1 | limits 연합체(union)의 colorComponentValue 구조체가 설정되어 있음을 나타냅니다 |
enum QRhiSwapChainHdrInfo::LuminanceBehavior
| 상수 | 값 | 설명 |
|---|---|---|
QRhiSwapChainHdrInfo::SceneReferred | 0 | 색상 값 1.0이 80 니트로 해석됨을 나타냅니다. 이는 Windows 컴포지터를 사용하는 HDR 지원 창의 동작 방식입니다. Windows의 HDR에 대한 자세한 내용은 이 페이지를 참조하십시오. |
QRhiSwapChainHdrInfo::DisplayReferred | 1 | 색상 값 1.0이 SDR 흰색의 값으로 해석됨을 나타냅니다. (예를 들어 200 니트일 수 있으나, 화면 밝기에 따라 달라질 수 있습니다.) 이는 Apple 플랫폼에서 HDR이 활성화된 창의 동작 방식입니다. Apple의 EDR 시스템에 대한 자세한 내용은 이 페이지를 참조하십시오. |
멤버 변수 설명서
union QRhiSwapChainHdrInfo::(unnamed union) QRhiSwapChainHdrInfo::limits
그래픽 API 또는 플랫폼에서 조회한 실제 값을 포함합니다. 데이터 유형은 limitsType 로 표시됩니다. 따라서 이는 연합(union)입니다. 현재 두 가지 옵션이 있습니다:
니트(nit) 단위의 휘도 값:
struct {
float minLuminance;
float maxLuminance;
} luminanceInNits;Windows에서 최소 및 최대 휘도는 화면 밝기에 따라 달라집니다. 데스크톱의 경우 관련이 없지만, 노트북에서는 화면 밝기가 언제든지 변경될 수 있습니다. 밝기가 증가하면 최대 휘도가 감소합니다. 또한, 해당 설정이 있는 경우 결과는 Windows 설정의 ‘시스템/디스플레이/HDR’ 탭에서 설정된 HDR 콘텐츠 밝기에 따라 달라질 수도 있습니다.
다만, 애플리케이션 실행 중에 노트북 화면의 밝기나 시스템 설정을 변경하더라도 반환된 값에 반드시 반영되지는 않는다는 점에 유의하십시오. 즉, hdrInfo()를 다시 호출하더라도 프로세스가 종료될 때까지 이전과 동일한 휘도 범위가 반환될 수 있습니다. 정확한 동작은 DXGI에 달려 있으며, Qt는 이를 제어할 수 없습니다.
참고: Windows컴포지터는 HDR 콘텐츠에 대해 장면 기준(scene-referred) 모드로 작동합니다. 색상 구성 요소 값 1.0은 80니트의 휘도에 해당합니다. 비 HDR 콘텐츠(예: 2D UI 요소)를 렌더링할 때는 화이트 레벨 보정이 필요한 경우가 많습니다. (예: 프래그먼트 색상 (1, 1, 1)을 출력하면 화면에서 너무 어두운 흰색 음영이 표시될 가능성이 높습니다.) sdrWhiteLevel 를 참조하십시오.
macOS/iOS의 경우, 현재 최대 및 잠재적 최대 색상 구성 요소 값이 제공됩니다:
struct {
float maxColorComponentValue;
float maxPotentialColorComponentValue;
} colorComponentValue;이 값은 화면 밝기에 따라 달라질 수 있으며, 노트북의 경우 그 사이 화면 밝기가 변경되었다면 다음 hdrInfo() 호출 시 결과가 달라질 수 있습니다. 최대 화면 밝기는 최대 색상 값 1.0을 의미합니다.
참고: Apple의 EDR은 디스플레이 기준입니다. 1.0은 SDR 흰색의 휘도 수준(예: 200 니트)에 해당하며, 이 값은 화면 밝기 및 기타 설정에 따라 달라질 수 있습니다. 이에 대한 정확한 휘도 값이나 디스플레이의 최대 휘도 값은 애플리케이션에 노출되지 않습니다.
참고: 일부 macOS 시스템에서는 시작 시 색상 구성 요소 값이 1보다 큰 올바른 값으로 즉시 설정되지 않는경우가 관찰되었으나 , 이러한 값은 첫 번째 프레임 도중이나 이후에 변경되는 경향이 있습니다.
QRhiSwapChain::hdrInfo()도 참조하십시오 .
QRhiSwapChainHdrInfo::LimitsType QRhiSwapChainHdrInfo::limitsType
macOS/iOS의 Metal에서는 플랫폼 API를 통해 휘도 값이 노출되지 않습니다. 대신, HDR이 아닌 설정에서는 1.0이 되는 최대 색상 구성 요소 값이 제공됩니다. 이 값은 limits 에서 어떤 종류의 정보를 확인할 수 있는지를 나타냅니다.
QRhiSwapChain::hdrInfo()도 참조하십시오 .
QRhiSwapChainHdrInfo::LuminanceBehavior QRhiSwapChainHdrInfo::luminanceBehavior
색상 값과 관련하여 플랫폼이 보일 것으로 예상되는 동작을 설명합니다.
sdrWhiteLevel도 참조하십시오 .
float QRhiSwapChainHdrInfo::sdrWhiteLevel
Windows에서는 이 값이 니트(nits) 단위의 동적 SDR 화이트 레벨을 나타냅니다. 이 값은 화면 밝기(노트북의 경우)와 Windows 설정의 ‘시스템/디스플레이/HDR’ 화면에서 지정된 SDR 또는 HDR 콘텐츠 밝기 설정에 따라 달라집니다.
2D UI 요소와 같은 비-HDR(SDR) 콘텐츠에 대해 백색 레벨 보정을 수행하려면, ` luminanceBehavior `가 ` SceneReferred`인 경우 최종 색상에 `sdrWhiteLevel / 80.0`을 곱하십시오. (Windows 및 선형 확장 sRGB(scRGB) 색 공간을 가정함)
다른 플랫폼에서는 이 값이 항상 미리 정의된 값인 200입니다. 이는 시스템의 실제 SDR 백색 레벨과 일치하지 않을 수 있지만, luminanceBehavior 가 DisplayReferred 일 때는 이 변수의 값이 실제로는 관련이 없습니다. 이때 1.0의 색상 구성 요소 값은 기본적으로 SDR 백색을 가리키기 때문입니다.
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.