Lac*_*ack 6 c++ winapi multiple-monitors direct2d optimus
我想制作一个Per-Monitor DPI-Aware Direct2D应用程序.我已按照Kenny Kerr的MSDN文章中的解释,扩展了Microsoft的"First Direct2D Program"示例.当两台显示器都使用一块显卡时,这种方法很有效,但在使用我的笔记本电脑的NVIDIA Optimus设置时会出现故障.WM_DPICHANGED
我可以通过以下步骤运行Per-Monitor Aware WPF示例来重现相同的故障:
(见这个bug的视频)
我只是在上面的示例应用程序中看到了这个错误,当我尝试将Kerr的WM_DPICHANGED处理程序添加到一个更简单的示例时.可疑的是,我已经看到其他应用程序(Chrome,Visual Studio本身)显示类似的黑色窗口,但只是暂时的,如果我在显示器之间拖动并且非常快速地最大化它们.
那么 - 是否有人熟悉这个故障?是我的显示驱动程序中的一些错误?或者是否有其他应用程序要做的事情来纠正它,示例代码没有?
你说的是NVIDIA Optimus?那些司机都是越野车,罪孽深重。尝试使用该标志初始化渲染目标D2D1_PRESENT_OPTIONS_RETAIN_CONTENTS。
2014 年,当我完成 Paint.NET 4.0 时,我花了很长时间才弄清楚这一点,并且代码中仍然有一条注释警告我永远不要关闭它:
private PresentOptions hwndPresentOptions =
PresentOptions.Immediately |
PresentOptions.RetainContents; // If we don't use RetainContents, then we get awful
// black flickering and mouse trails on some hardware
// (e.g. NVIDIA Optimus)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |