在VC环境下,用directX在窗口中绘图,切换到桌面然后切换回来,窗口无显示

来源:百度知道 编辑:UC知道 时间:2024/06/30 03:14:01
我的程序显示的是一段动画,全屏显示,每秒30帧

刚好最近看的一本书上有这个问题

Direct3D有两个状态工作状态和丢失状态
工作状态是正常状态 如果程序失去焦点就进入丢失状态 d3d是渲染设备就会丢失 从而不在渲染图形 这种情况下 渲染失败时 所有图形渲染操作也会返回 运行成功代码 只有IDirect3DDevice9::Present()接口函数会返回错误代码
D3DERR_DEVICELOST

丢失态的处理

IDirect3DDevice::Reset()是设备丢失后设备对象可以唯一调用的函数 但是如果程序释放了所有D3DPOOL_DEFAULT资源 Reset()的调用也将失败

IDirect3DDevice::TestCooperativeLevel()接口函数用来确定设备时候能够恢复若返回 D3D_OK表示设备可以回复

恢复前应该销毁所有显存资源 和 所有交换链

可能你没有重绘吧
一般是在用API中用DX库:
我知道的两种方式
1:响应WM_PAINT消息,在那里加入DX的绘制代码
2:在消息循环里每隔一定时间(可用2MS)调用一次DX绘制代码,Sleep函数来进行延迟
如果不是的话我就不清楚了

引用:我的程序显示的是一段动画,没秒30帧,不知道是不是d3d设备丢失
那你把代码发过来我看下吧邮箱我发给你

切出来要重置啊.