// 这个方法没有起到效果,得不到正确的返回值,还在寻找原因
DWORD stTotalDX9SystemMemory = 0;
DWORD stTotalVideoMemory = 0;
if(pDevice)
{
LPDIRECT3DDEVICE9 lpDD9 = pDevice->GetD3DDevice();
if(lpDD9)
{
IDirect3DQuery9* pEventQuery = NULL;
lpDD9->CreateQuery(D3DQUERYTYPE_RESOURCEMANAGER, &pEventQuery);
if (pEventQuery)
{
// Add an end marker to the command buffer queue.
pEventQuery->Issue(D3DISSUE_END);
D3DDEVINFO_RESOURCEMANAGER kRes;
pEventQuery->GetData( &kRes, sizeof(D3DDEVINFO_RESOURCEMANAGER), 0 );
pEventQuery->Release();
for ( int i = 1 ; i < D3DRTYPECOUNT ; i++ )
{
if ( kRes.stats[i].TotalBytes == 0 )
{
continue;
}
stTotalDX9SystemMemory += ( kRes.stats[i].TotalBytes ) ;
stTotalVideoMemory += ( kRes.stats[i].WorkingSetBytes ) ;
}
}
}
}