处置时的DirectX免费记忆

时间:2018-01-17 11:21:20

标签: c# memory directx gpu sharpdx

我有一个应用程序可以创建设备,绘制内容并可以关闭,而不会退出应用程序。

如果关闭窗口,我想处理属于设备的所有d3d对象,以及删除设备对象。完全释放此窗口的内存。如果在仍在运行的应用程序中打开一个新窗口,我想要一个新设备和所有对象和东西。

除了释放内存之外,这很有效。

我处理了所有对象,最后我在ImmediateContext和设备上调用dispose。

            mDevice.ImmediateContext.ClearState();
            mDevice.ImmediateContext.Flush();
            mDevice.ImmediateContext.TryDispose();
            mDevice.TryDispose();

如果我调试我的应用程序并检查:

Device.QueryInterface<DeviceDebug().ReportLiveDeviceObjects(ReportingLevel.Detail) 

我得到以下结果: enter image description here

你可以看到除了设备外的所有设备都是IntRef。

此时删除窗口并处于即将打开新状态的状态,我希望现在可以释放内存。但事实并非如此......即使引用已经消失,也没有任何东西被释放。

如果我在此之后退出应用程序,则不会收到有关仍然活动对象的警告。

我想知道这是否是因为设备引用?但我肯定会丢弃这个设备。我不确定照片中的这个3对我说的是什么以及我是否必须处理那些事情。

记忆力保持不变,似乎没有任何东西被释放。

提前感谢您的帮助!

(我还不熟悉使用DirectX开发)

0 个答案:

没有答案