|
发表于 2021-3-31 21:35:17
|
显示全部楼层
浙江省杭州市
vista以后,所有桌面窗口归DWM管理,DWM本身就是个全屏3D程序,而同时只允许有一个全屏程序。。。当你切到其他游戏去,对DWM来说算device lost,所以你所有对window的操作都没用了。XP时代没有DWM,但切全屏时原来对应桌面的device handle仍然被替换,所以和DWM情况是一样的。
有人提到overlay,估计这里的overlay是指的hardware overlay. overlay仍然需要你自己create device,而切到全屏游戏依然device lost,所以你只能在自己的程序里用overlay。
一般的做法是hook runtime的DLL,DX或者OpenGL都可以,endscene,swapchain, swapbuffer等等,把自己要的东西draw上去,然后再call原来的函数。
也有把这称为"overlay"的,其实并不是指HW overlay,而是用来描述在把东西画(over)在原来的scene(layer)上,他们都在向同一个render target里画东西。而HW overlay完全是两个render target,由硬件把他们composite在一起 |
|