如何查询Windows10下的真实显示位深?

How to query true display bit depth under Windows 10?

我正在努力寻找任何 win32 api 调用,它可以根据每个通道的位数正确识别连接的监视器的位深度。随附的屏幕截图显示设置可见。

使用 DXGI 可以枚举输出上的所有模式并轻松识别它们的位深度,但是没有调用来获取当前模式。

所有当前 return bitsPerPel 始终指示 32bpp 的 win32 调用。

有谁知道哪个调用可以获得这些数据?我可以使用 NvAPI 和 ADL 检测到这一点,但是没有针对基于英特尔的机器的解决方案。

我还会对活动信号分辨率与桌面分辨率字段以及如何检索它们感兴趣。

在我看来,高级显示设置中的Bit depth其实就是每个color的bit depth,只是命名上的混淆。标准的 32 位颜色是红色、绿色、蓝色各 8 位,其余 8 位要么用于透明度,要么只用零填充。这就是为什么你总是为每个像素获得 32 位。

DXGI_OUTPUT_DESC1 结构让你:

BitsPerColor

Type: UINT

The number of bits per color channel for the active wire format of the display attached to this output.

The DXGI_OUTPUT_DESC1 structure is initialized by the IDXGIOutput6::GetDesc1 method.

只是您获得的数据类型的示例:

--

适配器:Radeon RX 570 系列

输出:\.\DISPLAY4
  • 桌面坐标:(0, 0) - (3840, 2160); 3840 x 2160
  • 已连接到桌面:1
  • 旋转:DXGI_MODE_ROTATION_IDENTITY
  • 监视器:0x000100AF
  • 物理显示器:LG ULTRA HD(DisplayPort) (0x00000000)
  • 每种颜色的位数:10 <<---------------------------- ------
  • 颜色Space:DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709
  • 三原色,白点:R { 0.652, 0.335 },G { 0.305, 0.637 },B { 0.148, 0.062 }; { 0.313, 0.329 }
  • 亮度:最小 0.500,最大 270.000,最大全画幅 270.000
  • 硬件组合支持:DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_FULLSCREEN | DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_CURSOR_STRETCHED