2012-03-11 59 views
1

我正在寻找一种可能性来估计Direct3D中的空闲纹理内存,就像使用IDirect3DDevice9::GetAvailableTextureMem一样,但目前为止还没有发现任何东西。有什么建议么?GetAvailableTextureMem在Direct3D 11

回答

0

您可以使用此代码片段:

int getAviableVideoMemoryInBytes(ID3D11Device* pd3dDevice) 
{ 
    assert(pd3dDevice); 

    IDXGIDevice * pDXGIDevice = nullptr; 
    HRESULT hr = pd3dDevice->QueryInterface(__uuidof(IDXGIDevice), (void **)&pDXGIDevice); 

    if(FAILED(hr)) 
    { 
     std::cout << "Failed to query interface IDXGIDevice" << std::endl; 
    } 

    IDXGIAdapter * pDXGIAdapter = nullptr; 
    pDXGIDevice->GetAdapter(&pDXGIAdapter); 

    DXGI_ADAPTER_DESC adapterDesc; 
    pDXGIAdapter->GetDesc(&adapterDesc); 

    pDXGIDevice->Release(); 

    return adapterDesc.DedicatedVideoMemory; 
} 
+1

OK,我不知道这种方法。然而,据我所知,这会给我完全可用的记忆,而不是估计目前有多少免费,对吗? – Christoph 2013-01-03 16:38:39

+0

对。它决定了完全可用的内存,而不是当前可用的内存。 – Vertexwahn 2013-01-04 11:56:25

+0

你知道后者是否可能? – Christoph 2013-01-09 13:05:54