nvidia 驱动程序和报告的显示器 EDID 存在问题:显示器的原始分辨率为 1920x1080 32bpp 60Hz,但由于某种原因,它仅显示整个桌面的一部分(过扫描/欠扫描)并且图像模糊,因此我创建了自定义分辨率 1920x1080 32bpp 59Hz CVT-reduced-bank,效果很好。
问题是,当连接 HDMI 电缆时,Windows 会自动选择错误的原始分辨率,而不是自定义分辨率。如何将自定义分辨率设置为默认分辨率?因此,当计算机启动时,如果连接了 HDMI 显示器,它将默认使用自定义分辨率。
或者是否有命令可以执行以切换到自定义分辨率,而不是使用 nvidia 控制面板? 在这种情况下,是否有 HDMI-connected-event 可以挂接以执行该命令?
谢谢。
答案1
我在这里找到了控制面板 API:http://developer.download.nvidia.com/SDK/9.5/Samples/DEMOS/common/src/NvCpl/docs/NVControlPanel_API.pdf。以下命令不起作用:
rundll32.exe NvCpl.dll,dtcfg setmode 2 1920 1080 32 59
这讨论表明这种方法不再受支持:(
解决方案是让使用 NvAPI_DISP_* 函数的应用程序做出适当的更改。
- NvAPI_DISP_GetTiming() // with NV_TIMING_OVERRIDE_CVT_RB parameter set
- NvAPI_DISP_TryCustomDisplay()
- NvAPI_DISP_SaveCustomDisplay()
剩下的事情就是在连接 HDMI 时运行此程序:这里(缺少声誉)是如何为图形适配器查找设备类 GUID。然后使用 RegisterDeviceNotification() 函数注册以获取 WM_DEVICECHANGE 通知。