1

当我将其中一个显示器切换到全屏模式时,有时其他显示器会变黑并且不会显示任何内容。我做错了什么还是只是一些错误?

我创建了一个窗口,然后创建了一个绑定到该窗口的交换链。我用第一个参数 true 调用交换链的 SetFullScreenState,第二个参数是我想要切换全屏的监视器的 IDXGIOutput 对象。有时它工作正常,但有时所有其他显示器都丢失了(只有全屏显示器显示东西)。

我的显卡是Radeon HD6750,驱动版本是12.3。


我发现 MulitMon10 样本有同样的问题,而有些游戏没有。还是天际和猴岛的故事使用 D3D 或 OpenGL ......?

4

1 回答 1

0

这个问题有两年了。我刚遇到它。我在 DX11 上遇到了类似的问题,有时在调试版本中发生,系统地在发布版本中发生。在我的范例中,主监视器拥有一个控制台和一个可选的“按钮”GUI。辅助监视器(可用监视器之一)是全屏应用程序窗口,其中显示 2D 专业图像并使用 1D 和 3D 查找表转换 GPU。

让主显示器变黑是一个表演障碍。所有需要的对话框都是控制台窗口的子窗口(因此,在主监视器上打开)。辅助监视器是电影数字投影仪....足够'blabla'。

因此,我的解决方案是在目标窗口已经处于全屏模式时以窗口模式创建交换链。

别问我为什么。这个对我有用。这里还有一点:

首先,我的显示窗口设置为填充整个显示器表面(没有边框,没有所有内容)。

其次,我使用“windowed = true”为此窗口创建交换链。

事实上,即使它看起来是全屏的,它也是窗口化的。没有边框,就显示/渲染 2D 图像而言,它的工作方式相同。直接馈入后缓冲区也可以。

然后,只有这样,您才能将后台缓冲区切换到真正的管理全屏。由于这个手术对眼睛来说非常残酷,我倾向于只在绝对必要的时候才做。实际上,Win7 将重置整个桌面(因此,所有显示器、所有窗口)并创建多个闪光。

在创建后缓冲区后进入真正的全屏状态时,我从未经历过卡在桌面重置中间的解散(回到原来的问题)。

完整地说,“窗口化全屏”和“真实全屏”之间存在差异。你可以使用的东西。

  • 窗口全屏:其他窗口/对话框将与您的 2D 创建重叠。

  • 真正的全屏:其他窗口/对话框应该留在下面(不可见,但在那里)。

根据需要在两种模式之间切换会很好,除了桌面重置压力是一个沉重的负担。

于 2014-03-31T18:42:54.663 回答