游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2209|回复: 3

请问设备丢失的处理能否完全独立于一个DLL模块??

[复制链接]

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
发表于 2010-2-1 14:01:00 | 显示全部楼层 |阅读模式
假如渲染模块被设计成一个DLL,那设备丢失的处理(资源销毁、设备重置、资源重建)有办法完全脱离应用程序么?

我的资源都是用D3DPOOL_DEFAULT模式,在应用程序里使用接口创建控件啥的。资源的销毁和设备重置在DLL里可以自行处理,但是唯独这个资源创建,要在应用程序里处理。

因为DLL这个模块本身不知道应用程序会创建哪些资源,所以资源的重建工作,我总是要放在应用程序里处理。

请问这种问题有无方法处理呢??

59

主题

404

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
发表于 2010-2-1 19:49:00 | 显示全部楼层

Re:请问设备丢失的处理能否完全独立于一个DLL模块??

有一种很麻烦的办法 就是记录下应用程序创建了哪些资源,如何创建的。
不过这是很笨的办法。

还有一种办法就是写一个回调函数,当设备需要重建时通知程序自己加载资源。该回调所指的函数可以是程序中初始化资源的函数

最好的办法是把资源交给d3d管理,即D3DPOOL_MANAGED。现在的显卡都这么好,交给d3d管理并不会降低多少程序的效率。

某些必须由DEFAULT的资源(如RenderTarget),只要事先保存了其尺寸和颜色格式即可重建

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
 楼主| 发表于 2010-2-2 02:06:00 | 显示全部楼层

Re: Re:请问设备丢失的处理能否完全独立于一个DLL模块??

flyue: Re:请问设备丢失的处理能否完全独立于一个DLL模块??

有一种很麻烦的办法 就是记录下应用程序创建了哪些资源,如何创建的。
不过这是很笨的办法。

还有一种办...


回调函数用起来仍然问题重重。

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2010-2-5 12:29:00 | 显示全部楼层

Re:请问设备丢失的处理能否完全独立于一个DLL模块??

回调函数完全可以解决你的需求
当lost之后通知程序释放资源
reset之前从新建立资源

或者就是自己写一个资源管理类
所有的创建和销毁都基于dll内部
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-16 00:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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