游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5151|回复: 14

LPDIRECT3DDEVICE9接口释放问题

[复制链接]

20

主题

70

帖子

78

积分

注册会员

Rank: 2

积分
78
发表于 2004-9-10 11:10:00 | 显示全部楼层 |阅读模式
我在一个类cb中定义了一个LPDIRECT3DDEVICE9 m_pdevice变量
然后在类的构造函数里赋值
CB::CB(LPDIRECT3DDEVICE9 pd3dDevice)
{
  m_pDevice  =  pd3dDevice;
}
然后我就在类成员函数里用该变量m_pDevice创建了VB,TEXTURE
那么当该类结束的时候,是否要进行m_pDevice->Release()的操作?原因是什么?

33

主题

669

帖子

669

积分

高级会员

Rank: 4

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

Re:LPDIRECT3DDEVICE9接口释放问题

需要释放,因为m_pDevice复制了一个接口指针,按照COM的规则,应该释放。

18

主题

579

帖子

583

积分

高级会员

Rank: 4

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

Re:LPDIRECT3DDEVICE9接口释放问题

m_pd3ddevice 是不是一个有效的指针啊?
在析构的时候,要看看其他类还有没有使用此设备的,因为你只创建了一次,如果Release,整个程序的其他类的m_pd3ddevice就无效了

20

主题

70

帖子

78

积分

注册会员

Rank: 2

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

Re:LPDIRECT3DDEVICE9接口释放问题

to 游戏战士:
对,我也是这样想的(而且还有一个原因,就是m_pDevice还创建了VB资源),可是我试着Release,程序结束的时候就出错!
所以我就换成是在外部将m_pDevice作为参数传进去(而不是定义成类的成员变量!)这样就不用Release,程序退出时也正常!
但是当我定义多个该类CB的实例的时候,程序退出的时候又还是出错了!究竟怎么回事?郁闷

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2004-9-10 19:21:00 | 显示全部楼层

Re:LPDIRECT3DDEVICE9接口释放问题

什么样的错误?

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2004-9-10 20:24:00 | 显示全部楼层

Re:LPDIRECT3DDEVICE9接口释放问题

换成这样
if(m_pDevice!=NULL)
m_pDevice->Release();

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2004-9-10 20:26:00 | 显示全部楼层

Re:LPDIRECT3DDEVICE9接口释放问题

我对D3D的COM模型还不是很了解

20

主题

70

帖子

78

积分

注册会员

Rank: 2

积分
78
 楼主| 发表于 2004-9-10 20:31:00 | 显示全部楼层

Re:LPDIRECT3DDEVICE9接口释放问题

就是接口没有释放的错误!因为我edbug后它是跳到m_pd3ddevice->Release()这操作后,就执行不了,错误就是那种内存读错误

20

主题

70

帖子

78

积分

注册会员

Rank: 2

积分
78
 楼主| 发表于 2004-9-13 10:53:00 | 显示全部楼层

Re:LPDIRECT3DDEVICE9接口释放问题

还是不行,很郁闷,搞不懂为什么当定义多个该类CB的实例的时候就会出这种错误! *_*

18

主题

579

帖子

583

积分

高级会员

Rank: 4

积分
583
发表于 2004-9-13 11:16:00 | 显示全部楼层

Re:LPDIRECT3DDEVICE9接口释放问题

是不是你使用的LPVERTEXBUFFER,纹理那些借口没有释放?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-20 16:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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