存在 SwapChain 导致的 DirectX 内存泄漏

Posted

技术标签:

【中文标题】存在 SwapChain 导致的 DirectX 内存泄漏【英文标题】:DirectX Memory Leak Caused By SwapChain Present 【发布时间】:2018-11-22 16:55:27 【问题描述】:

Image of SwapChain Memory Leak

您好,我只是 DirectX 11 编程的初学者, 但最近我面临一个严重的问题。 即使我使用互联网上的任何教程,也总会留下一些漏洞。 我追踪了它的原因,它是 Swapchain Present。 但奇怪的是,它不是不断增加泄漏,而是一次。 甚至在第一次调用 Present 时也不会。 几秒钟后,大约 3~5mb 的内存会像该图像一样增加。 如果我提前终止程序,泄漏就不会留下。 甚至在我看到 Present 函数绘制的屏幕之后。 它对于进行编程并不重要,但它让我发疯。 在我搜索了一些之后,我认为这是关于交换链的。 我可以看到提示我的警告 DXGI_SWAP_EFFECT_FLIP_DISCARD 而不是 DXGI_SWAP_EFFECT_DISCARD。 所以我更改了 Desc 并将缓冲区计数增加到 2,但泄漏仍然存在。我在其他电脑上测试过,但没问题。我认为最近的 Windows 更新有问题。我找到了一个帖子,但不是我的情况。 IDXGISwapChain::Present Memory Leak 它不断增加的内存,他的 GPU 是 AMD,而我的是 NVIDIA。 我尝试重新安装 Windows,但它在几个小时内就好了,但它又出来了。 没有人遭受这个问题吗?我找不到关于此的任何问题。 如果有人知道这一点,请帮助我。谢谢。

【问题讨论】:

【参考方案1】:

伙计们,这是因为 Nahimic。 如果您使用的是 MSI 笔记本电脑,它会为您推荐的音频程序。 不要安装它。

【讨论】:

以上是关于存在 SwapChain 导致的 DirectX 内存泄漏的主要内容,如果未能解决你的问题,请参考以下文章

亲爱的 IMGUI 和 DirectX 12 覆盖 (DXGI_ERROR_INVALID_CALL)

是否可以使用 DirectX 工具包中的屏幕抓图捕获桌面/屏幕截图?

DirectX 11引擎在第三次代码改进后没有突然运行,我不知道为什么

csharp デバイスとSwapChainを作成のみの部分コード

win7系统丢失WMI,导致directx不起作用 ,请问各位高手怎样重装WMI?

Directx 11 前缓冲器