yxk*_*yxk 6 c++ debugging directx
在我的DirectX应用程序结束时,我得到"Direct3D设备具有非零引用计数,这意味着某些对象未被释放." 应用程序很大,不是我编写的,我怎样才能调试哪些资源没有被发布?
第一步是通过DirectX控制面板转向使用DirectX调试DLL .(IIRC,这些是安装DirectX SDK时的可选项,因此您可能需要安装它们.)
当您下次运行应用程序时,DirectX应该为您提供有关泄漏的更多信息.具体来说,你会想要找到这样的一行:
D3DX: Set HKLM\Software\Microsoft\Direct3D\D3DXBreakOnAllocId=0x1c17 to debug
allocation id ^^^^^^
Run Code Online (Sandbox Code Playgroud)
或者,像这样:
Direct3D9: (WARN) :Memory Address: 00385580 lAllocID=1 dwSize=000047f8, (pid=00000474)
allocation id ^
Run Code Online (Sandbox Code Playgroud)
一旦有了分配ID,就可以通过设置Break on AllocIDDirectX控制面板中的设置(或通过设置上面提到的注册表项),告诉DirectX在程序中发生分配时中断.
然后,这是检查callstack以查看涉及DirectX调用的问题.
| 归档时间: |
|
| 查看次数: |
2541 次 |
| 最近记录: |