这个问题有两年了。我刚遇到它。我在 DX11 上遇到了类似的问题,有时在调试版本中发生,系统地在发布版本中发生。在我的范例中,主监视器拥有一个控制台和一个可选的“按钮”GUI。辅助监视器(可用监视器之一)是全屏应用程序窗口,其中显示 2D 专业图像并使用 1D 和 3D 查找表转换 GPU。
让主显示器变黑是一个表演障碍。所有需要的对话框都是控制台窗口的子窗口(因此,在主监视器上打开)。辅助监视器是电影数字投影仪....足够'blabla'。
因此,我的解决方案是在目标窗口已经处于全屏模式时以窗口模式创建交换链。
别问我为什么。这个对我有用。这里还有一点:
首先,我的显示窗口设置为填充整个显示器表面(没有边框,没有所有内容)。
其次,我使用“windowed = true”为此窗口创建交换链。
事实上,即使它看起来是全屏的,它也是窗口化的。没有边框,就显示/渲染 2D 图像而言,它的工作方式相同。直接馈入后缓冲区也可以。
然后,只有这样,您才能将后台缓冲区切换到真正的管理全屏。由于这个手术对眼睛来说非常残酷,我倾向于只在绝对必要的时候才做。实际上,Win7 将重置整个桌面(因此,所有显示器、所有窗口)并创建多个闪光。
在创建后缓冲区后进入真正的全屏状态时,我从未经历过卡在桌面重置中间的解散(回到原来的问题)。
完整地说,“窗口化全屏”和“真实全屏”之间存在差异。你可以使用的东西。
根据需要在两种模式之间切换会很好,除了桌面重置压力是一个沉重的负担。