Direct3D9: (INFO) :MemFini!
Direct3D9: (ERROR) :Memory still allocated! Alloc count = 143
Direct3D9: (ERROR) :Current Process (pid) = 000010b4
...
Direct3D9: (ERROR) :Total Memory Unfreed From Current Process = 2083940 bytes
Direct3D9: :====> EXIT: DLLMAIN(61d4d9a0): Process Detach 000010b4
I use these direct x objects, all of which I am sure I release() and set to NULL;
LPDIRECT3D9
LPDIRECT3DDEVICE9
LPDIRECT3DVERTEXBUFFER9
LPDIRECT3DINDEXBUFFER9
LPD3DXSPRITE
LPD3DXFONT
map<wstring, LPDIRECT3DTEXTURE9>
PIX shows that the index and vertex buffer, created by the application, are never destroyed (I call release on both). It also shows that two d3d9 surfaces, created by direct3d, are never destroyed (usages: rendertarget and depthstencil).
When I call release() on the graphics device there is still a reference to it, so calling release on it again leaves no leaks. I doubt this is the solution, just doesn't seem right. What other methods would add a reference to the device? Or what could it be that I am missing? Thank you.