游戏窗口模式和全屏模式的区别在哪?
1.在分辨率相同的情况下,哪一种模式能够更流畅地表现游戏画面?
2.从表现上来看窗口模式能够比全屏模式更快的切换到其他程序,是否是因为全屏状态下游戏完全接替了系统对画面的渲染?此时并没有进行桌面和资源管理器等的渲染?
3.某些游戏在全屏状态下切换出去,会看到桌面的分辨率也变成了游戏中的分辨率,这是什么原因造成的?
4.有说法说Windows 7之后两种方式已经没有太大的区别,是什么原因,是否意味着以后游戏其实没有必要有全屏模式?
2.从表现上来看窗口模式能够比全屏模式更快的切换到其他程序,是否是因为全屏状态下游戏完全接替了系统对画面的渲染?此时并没有进行桌面和资源管理器等的渲染?
3.某些游戏在全屏状态下切换出去,会看到桌面的分辨率也变成了游戏中的分辨率,这是什么原因造成的?
4.有说法说Windows 7之后两种方式已经没有太大的区别,是什么原因,是否意味着以后游戏其实没有必要有全屏模式?
8 条评论
分享
按投票排序
按时间排序
131 个回答
@
可可苏玛 已经回答了大部分,我就来补充一下win7的问题吧。
Vista上,由于wddm的限制,加上向下兼容的要求,渲染流程是:
Win7在开发的时候,终于有个懂图形的大佬发飙了,说你们TMD搞毛啊。于是新的wddm要求驱动提供overlay和blt,所以流程变得很简单高效:
好,回到题主的问题,窗口和全屏的区别。
对Vista来说,窗口需要那样一套流程,全屏因为没有GDI了,就直接一步去GPU,所以两者差别比较大。对Win7+,差距明显小了很多,尤其是少了读回CPU的巨大同步开销。但这个差别还是会存在的。要性能就全屏。
顺便补充一下,Android之前被长期诟病的一个事情就是电量时间那个条条总是存在,于是所有东西都需要混合,影响了游戏性能。
Vista上,由于wddm的限制,加上向下兼容的要求,渲染流程是:
- 硬件渲染的东西在GPU上做完
- 读回CPU端
- 把GDI这些用软件渲染
- 两者混合
- 拷贝到显存显示
Win7在开发的时候,终于有个懂图形的大佬发飙了,说你们TMD搞毛啊。于是新的wddm要求驱动提供overlay和blt,所以流程变得很简单高效:
- 硬件渲染的东西在GPU上做完
- 把GDI这些用软件渲染
- Blt到GPU端作为overlay
好,回到题主的问题,窗口和全屏的区别。
对Vista来说,窗口需要那样一套流程,全屏因为没有GDI了,就直接一步去GPU,所以两者差别比较大。对Win7+,差距明显小了很多,尤其是少了读回CPU的巨大同步开销。但这个差别还是会存在的。要性能就全屏。
顺便补充一下,Android之前被长期诟病的一个事情就是电量时间那个条条总是存在,于是所有东西都需要混合,影响了游戏性能。
1.在分辨率相同的情况下,哪一种模式能够更流畅地表现游戏画面?
全屏
2.从表现上来看窗口模式能够比全屏模式更快的切换到其他程序,是否是因为全屏状态下游戏完全接替了系统对画面的渲染?此时并没有进行桌面和资源管理器等的渲染?
你可以这么理解,不仅如此内存有时候也会被释放掉
3.某些游戏在全屏状态下切换出去,会看到桌面的分辨率也变成了游戏中的分辨率,这是什么原因造成的?
因为游戏是DX的,它会独占显卡,所以该模式下显卡被设置到了该分辨率
4.有说法说Windows 7之后两种方式已经没有太大的区别,是什么原因,是否意味着以后游戏其实没有必要有全屏模式?
不了解,不敢瞎说
本答案只要看最后一句即可。
------------------------------------
严格地说,楼主说的全屏实际上是独占模式。最主要的区别是Graphics Resource,尤其是Frame buffer是由Compositor还是Graphics API的Pipeline接管。
在独占模式下因为少有Context Switch,一般也是单一前台进程,在资源管理上Runtime/Driver也倾向于管的更少(比如DX7/8/9时代开发者入门必知必会的Device Lost的处理),所以系统可用的资源要略多一些,Driver上也 可能会有一些优化。当然,仅仅是可能。
这些措施会让系统的Cost有所下降,但是提供的功能也会少很多,比如IME在独占模式下完全需要应用程序进行绘制。
--------------------------------------
P.S. 我也见过独占模式卡的和屎一样的游戏。
------------------------------------
严格地说,楼主说的全屏实际上是独占模式。最主要的区别是Graphics Resource,尤其是Frame buffer是由Compositor还是Graphics API的Pipeline接管。
在独占模式下因为少有Context Switch,一般也是单一前台进程,在资源管理上Runtime/Driver也倾向于管的更少(比如DX7/8/9时代开发者入门必知必会的Device Lost的处理),所以系统可用的资源要略多一些,Driver上也 可能会有一些优化。当然,仅仅是可能。
这些措施会让系统的Cost有所下降,但是提供的功能也会少很多,比如IME在独占模式下完全需要应用程序进行绘制。
--------------------------------------
P.S. 我也见过独占模式卡的和屎一样的游戏。
分辨率相同,全屏模式效率最高
只针对那些说开窗口后游戏速度变快做答:
对于那些窗口化 帧率上升的游戏,硬件方面应该没有变化,都是gpu渲染然后blend. 速度变快的原因,我认为是软件算法上的改变,由于不是全屏,需要变换计算的象素就少了许多,fill-rate得升了,而且不需要用高质量大尺寸贴图,使用了一简便的算法,光影效果也有可能会减弱等等。
另外窗口化以后,如果你的游戏速度变快了,你是否发现有时屏幕产生的图像会发生错位,如果是那样的话,有可能是vsync功能没有了。
只针对那些说开窗口后游戏速度变快做答:
对于那些窗口化 帧率上升的游戏,硬件方面应该没有变化,都是gpu渲染然后blend. 速度变快的原因,我认为是软件算法上的改变,由于不是全屏,需要变换计算的象素就少了许多,fill-rate得升了,而且不需要用高质量大尺寸贴图,使用了一简便的算法,光影效果也有可能会减弱等等。
另外窗口化以后,如果你的游戏速度变快了,你是否发现有时屏幕产生的图像会发生错位,如果是那样的话,有可能是vsync功能没有了。
yang leonier,Tsukuba University, Member of YKSOFT S…
侯程禹、知乎用户 赞同
我记得是
win2k XP的驱动模型下DX可以直接写屏,全屏和窗口模式差距不大
vista的wddm1.0在窗口模式下直接写屏有困难,要经过dwm软混合,性能会低一点
win7、win8和win10的驱动模型都有改进
win2k XP的驱动模型下DX可以直接写屏,全屏和窗口模式差距不大
vista的wddm1.0在窗口模式下直接写屏有困难,要经过dwm软混合,性能会低一点
win7、win8和win10的驱动模型都有改进
1我在win7下翫《英雄無敵3》用全屏模式(HD+補丁中 遊戲分辨率選最低的800X600),因爲字大點,便於閱讀(圖片沒有文字重要)。
--------------------------------------------------------------------------------------
PS:我想做一款Heroes3的MOD,望有意者合作。
英雄無敵3希言子版MOD(或補丁、插件)修改說明 3.1版。諸位有何高見、有誰有意合作? - 电脑游戏
2我翫其他遊戲也是全屏。
--------------------------------------------------------------------------------------
PS:我想做一款Heroes3的MOD,望有意者合作。
英雄無敵3希言子版MOD(或補丁、插件)修改說明 3.1版。諸位有何高見、有誰有意合作? - 电脑游戏
2我翫其他遊戲也是全屏。