最近一直在头疼如果窗口大小改变了,如何将后台缓存的大小也随之改变的问题,还有窗口与全屏之间的转换问题,这两个小小的问题困扰了我三天三夜,终于都给我破解了,当时那个开心呀!我怎么破解的?嗯……是研究了微软的DXUT源代码才办到的,话说那个DXUT不是一般的难理解,它里面往往一个函数千回百转,想找到它的核心代码还真心不容易,没有一定基础最好不要去研究,否则你会苦恼不已。不过里面的知识还真博大精深,毕竟是DirectX的BOSS微软老大写的实例,研究透了,DirectX也算入门了,不过最重要的还是它的编程思想以及它的框架构建。好了,废话不多说,该进入主题了。
(1)
(2)
(3)
(4)
都会发出WM_SIZE的信息,剩下的就看里怎么处理,当这里我还有一点想提的就是,那个SetWindowPos() 函数,它可以将窗口调整为指定的大小,但是你千万不要将它放入WM_SIZE的处理里面,不然它就进入一个死循环,因为你不断的调用SetWindowPos()会不断的发出WM_SIZE的消息。
好了,判断窗口大小的是否改变的问题解决了,但还不

在Windows编程中,处理WM_SIZE消息可以判断窗口大小变化。为适应窗口大小改变,不应直接释放并重新创建Device,而应使用Reset()函数。D3DPRESENT_PARAMETERS结构体是关键,必须正确填充,包括开启深度模板缓存。当窗口大小改变,Reset()前先调用OnLostDevice(),之后再调用OnResetDevice(),确保资源的有效性。全屏模式下的处理则更为复杂。

386

被折叠的 条评论
为什么被折叠?



