gpt4 book ai didi

c++ - 使用 DXGI 将一台显示器切换到全屏时,其他显示器会变黑

转载 作者:太空宇宙 更新时间:2023-11-04 14:17:10 24 4
gpt4 key购买 nike

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

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

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


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

最佳答案

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

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

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

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

首先,我的显示窗口被设置为填满整个显示器表面(没有边框,没有任何东西)。

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

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

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

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

完整地说,“窗口全屏”和“真实全屏”是有区别的。您可能会用到的东西。

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

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

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

关于c++ - 使用 DXGI 将一台显示器切换到全屏时,其他显示器会变黑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10257284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com