我正在全屏玩一些 Steam 游戏,但它们只使用一个显示器。如果我尝试在第二个显示器上使用浏览器,游戏就会最小化。
是否有可能防止全屏应用程序在失去焦点时最小化?
我正在运行 Windows 7
答案1
一般情况下不会。
游戏尤其依赖于硬件覆盖在全屏模式下进行绘制。此方法具有速度优势,因为游戏可以完全绕过 Windows,直接将帧写入图形输出缓冲区。
当游戏处于窗口模式时,操作系统可以控制输出缓冲区,因此游戏必须通过操作系统的窗口管理器来渲染帧。此过程较慢,因为必须与屏幕上的所有其他窗口共享输出缓冲区。
屏幕上一次只能看到一个输出缓冲区,因此如果您的游戏可以控制它,则必须将其最小化才能切换回 Windows 的输出缓冲区。
唯一的解决方案是以窗口模式运行游戏(如果可以的话),并使其在一个屏幕上最大化。但根据游戏的不同,这会降低一些 FPS。
答案2
不要听别人说这不能通过独占全屏来实现。真正的问题是,当您按下 Alt-Tab 键时,它会继续将鼠标定位在您的主显示器上,而主显示器现在位于全屏应用程序下方,将您的桌面带到窗口的前层。
如果您在玩游戏时将主显示器更改为非游戏显示器,您应该能够使用 Alt-Tab 键而不会使游戏最小化,并且您将能够清楚地看到它将鼠标重新定位在哪里,并通过这样做来解释是什么导致它之前最小化......
我有一个自动热键脚本,用于交换主显示器并启动我的游戏,以及自动热键脚本中的另一个事件触发器,当它看到游戏可执行文件终止时将主显示器交换回来。
Steam 的“大画面”模式中还有一个功能,允许您指定在玩游戏时要将哪个显示器作为主显示器。它旨在将您的主显示器切换到另一个显示器进行游戏,然后在完成后将其恢复。但您也可以将其用于相反的操作,方法是将非游戏显示器指定为您要玩游戏的显示器,然后只需使用 alt-enter,然后按 win-shift-left/right,然后按另一个 alt-enter,将全屏游戏移回另一个显示器即可。
然后,当您完成游戏后,steam 会自动将您的主显示器切换回原来的位置。
希望这可以帮助。
顺便说一句...sayeed 关于直接将独占全屏写入输出缓冲区的说法并没有错,但是窗口仍然可以管理该流并控制其流式传输的层,以便它正确地嵌套在窗口之间。
否则我刚才建议的方法将不起作用......但事实确实如此。我按 Alt-Tab 键退出虚幻引擎独有的全屏游戏来输入这段代码,而我现在正盯着这个游戏......没有最小化。
我知道这是死贴,而且当时可能不是一个有效的解决方案...但今天寻找答案的人会发现它并被完全误导,除非提供适合时代的最新答案。