D3D的设备丢失处理经验

来源:互联网 发布:淘宝查隐形降权 编辑:程序博客网 时间:2024/05/16 00:52

1.什么时候会设备丢失?
全屏下被强制切回桌面时就会设备丢失
创建于显存的资源在设备丢失时会破损,如果没有重新载入就会引起设备丢失

 

2.哪些资源会影响设备丢失?
在创建D3D资源时,可以选择自己管理D3D资源还是让D3D帮你管理资源,前者需要在设备丢失时手动重新载入;后者就不需要。对于使用D3DPOOL_DEFAULT时为自己管理资源,D3DPOOL_MANAGED为D3D管理资源。对于D3DXMESH使用D3DXMESH_SYSTEMMEM因放在系统内存,所以不会存在设备丢失的问题.

3.哪些时候需要处理设备丢失
(1)在切换为全屏时
(2)改变窗口大小时,需要重新设定设备
(2)在Present返回D3DERR_DEVICELOST时

4.处理设备丢失的顺序
(1)卸载位于显存的自己管理的D3D资源和调用一些D3DX资源的OnLostDevice函数,如ISPRITE,ID3DXFONT
(2)按照创建设备时的方法填充D3DPRESENT_PARAMETERS,并使用设备Reset
(3)重新载入设备和调用一些D3DX资源的OnResetDevice函数
(4)重新设置矩阵和初始渲染状态

原创粉丝点击