|
发表于 2004-8-19 15:04:00
|
显示全部楼层
Re:DX8丢失页面怎么恢复???
lights 14:40:30
这样啊!那是啊!!因为你基础不扎实哦!你大概就没阅读ddraw的sdk文档吧!
天魂 14:40:42
DirectX8的!
lights 14:40:58
是协作级别 和 内存占用冲突的关系!
天魂 14:41:13
DX7的我会!
lights 14:41:47
一样的原理,一样的解决办法!
天魂 14:41:57
具体写写,行吗?
lights 14:43:39
就是当windowstate属性变化的时候进行处理!最小化的时候停止一切作图操作!而且要容错!恢复的时候,重新初始化!
天魂 14:44:50
If D3DDevice.TestCooperativeLevel <> 0 Then
D3DDevice.Reset D3DPP
End If
天魂 14:45:14
是这个语句吗?
lights 14:45:53
这仅仅是在初始化时检测能否正常设置协作级
天魂 14:46:55
DDraw.RestoreAllSurfaces
lights 14:47:14
form1.windowstate属性可以返回窗口状态!
form1.windowchange之类吧!我忘了,是事件!在那个属性变化时产生
天魂 14:47:09
这是DX7的恢复方法
天魂 14:47:43
'==================回恢丢失页面========================
'用于全屏模式,必须写在循环中
Sub RestoreDraw()
If DDraw.TestCooperativeLevel <> 0 Then
Do
If DDraw.TestCooperativeLevel = 0 Then
DDraw.RestoreAllSurfaces
Exit Do
End If
DoEvents
Loop
End If
End Sub
lights 14:48:09
i 服了 you ,你说的那个只能重建surface,就是内存!不能恢复丢失的设备id
天魂 14:47:57
我在DX7下这样写的
天魂 14:48:26
怎么做?
lights 14:49:43
在form1.windowchange事件里加入判断,如果最小化就停止作图!且 on error resume next
天魂 14:50:11
最大化后图像还在吗?
我试试这个方法
lights 14:51:18
恐怕不在!所以在恢复后要重新初始化!
lights 14:52:11
init的简化版
你会写个init的部分吧!现在写个简化的部分,重新初始化就用它!
天魂 14:51:56
DX7中用“DDraw.RestoreAllSurfaces”就搞定了,DX8中没有这样的方法吗?
lights 14:52:47
似乎有的!可我直接跳过dx8在搞dx9了,帮不上你!呵呵!
|
|