我有一个应用程序可以创建设备,绘制内容并可以关闭,而不会退出应用程序。
如果关闭窗口,我想处理属于设备的所有d3d对象,以及删除设备对象。完全释放此窗口的内存。如果在仍在运行的应用程序中打开一个新窗口,我想要一个新设备和所有对象和东西。
除了释放内存之外,这很有效。
我处理了所有对象,最后我在ImmediateContext和设备上调用dispose。
mDevice.ImmediateContext.ClearState();
mDevice.ImmediateContext.Flush();
mDevice.ImmediateContext.TryDispose();
mDevice.TryDispose();
如果我调试我的应用程序并检查:
Device.QueryInterface<DeviceDebug().ReportLiveDeviceObjects(ReportingLevel.Detail)
你可以看到除了设备外的所有设备都是IntRef。
此时删除窗口并处于即将打开新状态的状态,我希望现在可以释放内存。但事实并非如此......即使引用已经消失,也没有任何东西被释放。
如果我在此之后退出应用程序,则不会收到有关仍然活动对象的警告。
我想知道这是否是因为设备引用?但我肯定会丢弃这个设备。我不确定照片中的这个3对我说的是什么以及我是否必须处理那些事情。
记忆力保持不变,似乎没有任何东西被释放。
提前感谢您的帮助!
(我还不熟悉使用DirectX开发)