C++ 如何在Windows 10下查询真实显示位深度?
我正在努力寻找任何win32 api调用,以每个通道的位来正确识别连接监视器的位深度。附加的屏幕截图显示了可见的设置 使用DXGI可以枚举输出上的所有模式并轻松识别它们的位深度,但是不需要调用来获取当前模式 返回bitsPerPel的所有当前win32调用始终指示32bpp 有人知道哪个电话能得到这些数据吗?我可以通过NvAPI和ADL检测到这一点,但是没有针对基于intel的机器的解决方案 此外,我还对active signal resolution vs desktop resolution字段以及如何检索这些字段感兴趣C++ 如何在Windows 10下查询真实显示位深度?,c++,winapi,desktop,dxgi,C++,Winapi,Desktop,Dxgi,我正在努力寻找任何win32 api调用,以每个通道的位来正确识别连接监视器的位深度。附加的屏幕截图显示了可见的设置 使用DXGI可以枚举输出上的所有模式并轻松识别它们的位深度,但是不需要调用来获取当前模式 返回bitsPerPel的所有当前win32调用始终指示32bpp 有人知道哪个电话能得到这些数据吗?我可以通过NvAPI和ADL检测到这一点,但是没有针对基于intel的机器的解决方案 此外,我还对active signal resolution vs desktop resolution
在我看来,高级显示设置中的位深度实际上意味着每种颜色的位深度,这只是命名上的混乱。标准32位颜色为8位,分别表示红色、绿色、蓝色,其余8位用于透明度或仅用零填充。这就是为什么每个像素总是得到32位的原因。
DXGI\u OUTPUT\u DESC1
结构为您提供:
双色
类型:UINT
连接到此输出的显示器的活动导线格式的每个颜色通道的位数
DXGI_OUTPUT_DESC1结构由该方法初始化
仅举一个示例,说明您从中获得的数据类型:
--
适配器:Radeon RX 570系列
输出:\。\DISPLAY4
- 桌面坐标:(0,0)-(38402160);3840x2160
- 附加到桌面:1
- 旋转:DXGI\u模式\u旋转\u标识
- 监视器:0x000100AF
- 物理监视器:LG ULTRA HD(显示端口)(0x00000000)
- 每种颜色位数:10EnumDisplaySettings,使用ENUM_CURRENT_设置获取当前配置。该计算机需要重新格式化磁盘。不幸的是,win32 api调用不报告任何10位模式,而是在8位和10位情况下报告32bpp。DISPLAYCONFIG_PIXELFORMAT在报告DISPLAYCONFIG_PIXELFORMAT_NONGDI时提供了一些线索,然后与接受的答案一样,您可以使用IDXGIOutput6查询真实模式。