游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5690|回复: 8

(((求助)))~~关于D3D“Lost Devices”的解决方法~~(请知道的进

[复制链接]

58

主题

281

帖子

281

积分

中级会员

Rank: 3Rank: 3

积分
281
QQ
发表于 2004-9-8 20:12:00 | 显示全部楼层 |阅读模式
请问,在Direct3D全屏环境下,因ALT+TAB切换而导致的“Lost Devices”该怎么处理?
我照着SDK例子的d3dapp.cpp里做,先m_pd3dDevice->Reset,再SetTextureStageState、SetRenderState等等,却解决不了。
是否所有Texture也需要重新载入图象?
网上下载了几个其他例子,却都没有这个功能(一切换就完蛋)。
实在不知怎么做才好,希望高手们能不吝赐教,谢谢!

1

主题

177

帖子

198

积分

注册会员

Rank: 2

积分
198
QQ
发表于 2004-9-8 20:19:00 | 显示全部楼层

Re:(((求助)))~~关于D3D“Lost Devices”的解决方法~~(请知道

你可以生成一个伪全屏的应用程序,这样lost device 的事件就不会发生了.
这是我的一个偷懒的方法,而且也十分有效.只不过要浪费几百K内存.^_^.

58

主题

281

帖子

281

积分

中级会员

Rank: 3Rank: 3

积分
281
QQ
发表于 2004-9-8 20:22:00 | 显示全部楼层

Re:(((求助)))~~关于D3D“Lost Devices”的解决方法~~(请知道

请问“伪全屏”是指?不会是一个和桌面分辨率一样的POPUP窗口吧?
可以再详细讲一下吗?谢谢。

1

主题

177

帖子

198

积分

注册会员

Rank: 2

积分
198
QQ
发表于 2004-9-8 22:09:00 | 显示全部楼层

Re:(((求助)))~~关于D3D“Lost Devices”的解决方法~~(请知道

让你的窗口获取一个私有DC,这样就不可能有lost device啦.
在msdn上找一下CS_OWNDC,看看吧.
我也是在运行某个游戏时,用spy++查看窗口格式时发现的.
祝你好运啦!

58

主题

281

帖子

281

积分

中级会员

Rank: 3Rank: 3

积分
281
QQ
发表于 2004-9-9 00:38:00 | 显示全部楼层

Re:(((求助)))~~关于D3D“Lost Devices”的解决方法~~(请知道

如何让窗口获取私有DC?
wc.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW; ?
在MSDN搜索得出无数条,看得我眼花缭乱。
另外,这种方法会不会对桌面颜色造成影响?

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2004-9-9 10:07:00 | 显示全部楼层

Re:(((求助)))~~关于D3D“Lost Devices”的解决方法~~(请知道

在LOSTDEVICE 的时候
所有用D3DPOOL_DEFAULT方式创建的资源必须被释放
否则RESET的时候会出错
而用D3DPOOL_MANAGED方式创建的资源不需要释放

18

主题

579

帖子

583

积分

高级会员

Rank: 4

积分
583
发表于 2004-9-9 10:46:00 | 显示全部楼层

Re:(((求助)))~~关于D3D“Lost Devices”的解决方法~~(请知道

呵呵

29

主题

421

帖子

436

积分

中级会员

Rank: 3Rank: 3

积分
436
发表于 2004-9-9 11:05:00 | 显示全部楼层

Re: (((求助)))~~关于D3D“Lost Devices”的解决方法~~(请知道

一、笨办法,不建议切换。用键盘钩子屏蔽一切造成LostDevices的按键信息。
二、简单办法,切换的话,先InvalidateDeviceObjects,然后在RestoreDeviceObjects,就可以解决了。

用D3D需要有点专业精神,伪全屏可能解决了ALT+TAB的问题,但是CTRL+ALT+DEL后依然会失败。

58

主题

281

帖子

281

积分

中级会员

Rank: 3Rank: 3

积分
281
QQ
发表于 2004-9-9 13:00:00 | 显示全部楼层

Re: Re:(((求助)))~~关于D3D“Lost Devices”的解决方法~~(请知

呵呵~~解决了,原来只是出了一点小小的差错,
我的m_pD3dVertexBuffer->Release()不小心写在了Reset之后,
现在改写在前面就搞定啦。
非常感谢大家的帮助!!  [em3]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-18 08:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表