@
可可苏玛
已经回答了大部分,我就来补充一下win7的问题吧。
上,由于wddm的限制,加上向下兼容的要求,渲染流程是:
硬件渲染的东西在GPU上做完
读回CPU端
把GDI这些用软件渲染
两者混合
拷贝到显存显示
这样的话,相当于整个屏幕都要维持2份拷贝,并且要互相同步。早期的驱动上,和GDI混合使用的话闪得要死或者慢的要死,就是这个传奇私服窗口分辨率问题原因。(比如Maya就这么任性地混合使用了)
Win7在开发的时候,终于有个懂图形的大佬发飙了,说你们TMD搞毛啊。于是新的wddm要求驱动提供和blt,所以流程变得很简单高效:
硬件渲染的东西在GPU上做完
把GDI这些用软件渲染
Blt到GPU端作为
这样不但快,而且省电,而且只需要在GPU端维护一份屏幕拷贝,CPU端只需要短暂地维护一个局部GDI的内容就可以了。
好,回到题主的问题,窗口和全屏的区别。
对来说,窗口需要那样一套流程,全屏因为没有GDI了,就直接一步去GPU,所以两者差别比较大。对Win7+,差距明显小了很多,尤其是少了读回CPU的巨大同步开销。但这个差别还是会存在的。要性能就全屏。
顺便补充一下,之前被长期诟病的一个事情就是电量时间那个条条总是存在,于是所有东西都需要混合,影响了游戏性能。
发表评论