首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >D3DImage泄露?

D3DImage泄露?
EN

Stack Overflow用户
提问于 2011-07-02 19:36:19
回答 1查看 997关注 0票数 2

我在SlimDX中使用D3DImage。

我创建了一个名为D3DImageSource的类,它继承了D3DImage,并在它的ctor中创建了一个SlimDX.D3D9.Surface。曲面也将指定给ctor中的D3DImage。

D3DImageSource实现IDisposable并在被调用时释放内部Surface。

每当我调整WPF窗口的大小时,我都会用窗口的新大小创建一个新的D3DImageSource,然后释放旧的。即使我在这个时候处理了内部表面,它仍然消耗了大量的内存。D3DImage中似乎也没有Dispose方法,D3DImage似乎包含了一些未正确释放的内部缓冲区。

其他人有过类似的经历吗?

我在运行Win7x64,VS2010,.NET4,SlimDX x86。

EN

回答 1

Stack Overflow用户

发布于 2012-01-26 10:16:42

我没有使用过SlimDX,但我使用了带有托管Direct3D包装器的D3DImageSource,当我更改表面时,我通过执行以下操作告诉D3DImageSource放弃原始表面

代码语言:javascript
复制
d3dImageSource.Lock()
d3dImageSource.SetBackBuffer(D3DResourceType.IDirect3DSurface9, IntPtr.Zero)
d3dImageSource.Unlock()

如果您还没有这个,那么您可能需要在dispose方法中使用它。

还有,先提个醒。我不认为每次大小改变时都需要重新分配图像源。在大小更改时,您只需将后台缓冲区表面更改为具有更新大小的新表面。当然,如果您选择这样做,您仍然需要首先使用上面的代码释放旧的表面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6556764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档