游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1716|回复: 5

设备丢失后的奇怪问题

[复制链接]

5

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2005-11-29 20:00:00 | 显示全部楼层 |阅读模式
1.    我在文件中定义了一个FPS类用来显示FPS,里面定义了ID3DXFont *m_pFont,
并在另一个D3D文件中定义了FPS *g_pFPS,
当设备丢失后,在g_pFPS内部执行m_pFont->OnLostDevice();m_pFont->OnResetDevice();
但是场景不能恢复,但是当我将g_pFPS->Render()注解掉,即不再显示FPS时场景能恢复,
现在已能肯定是上面m_pFont的两个函数用得不对,但不知怎么才能将m_pFont恢复呢?

2.   我在另一个文件中也定义了一个粒子系统类,里面有一个LPDIRECT3DDEVICE9  m_pDevice变量,也在D3D文件中定义了该类的一个对象指针,并将g_pd3dDevice赋给m_pDevice以便渲染粒子系统,
设备丢失后,我先是恢复设备,然后将恢复后的设备再一次赋给m_pDevice,但是场景不能恢复,
于是我干脆执行m_pDevice->Reset( &d3dpp ),但还是不行,去掉粒子系统的渲染,则场景能恢复,
不知应该怎么恢复这个m_pDevice呢?

请各位大大们赐教啊!!

8

主题

284

帖子

296

积分

中级会员

Rank: 3Rank: 3

积分
296
QQ
发表于 2005-11-30 07:42:00 | 显示全部楼层

Re:设备丢失后的奇怪问题

在设备复位前,释放掉所有非D3D管理的资源。
再在设备复位后,恢复(重建)这些非D3D管理的资源。

5

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2005-11-30 17:03:00 | 显示全部楼层

Re:设备丢失后的奇怪问题

King_jinjing:
谢谢你的提醒,现在第一个问题已经解决了,
但是第二个问题我不知道怎么做,你能具体
说一下么?

5

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2005-11-30 21:56:00 | 显示全部楼层

Re:设备丢失后的奇怪问题

大家也帮帮忙啊!

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-11-30 22:10:00 | 显示全部楼层

Re:设备丢失后的奇怪问题

恢复设备后并不需要再把g_pd3dDevice赋给m_pDevice,
因为恢复设备并不改变g_pd3dDevice的地址,
而Reset应该只在主线中对g_pd3dDevice执行且只执行一次

5

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2005-12-1 13:30:00 | 显示全部楼层

Re:设备丢失后的奇怪问题

谢谢,确实如此,刚才我又看了一下,发现忘记释放掉顶点缓冲了,
但我怎样才能再一次获得缓冲指针呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 19:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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