DirectX를 사용하여 사용 가능한 비디오 메모리를 어떻게 쿼리합니까?


답변:


8

Game Coding Complete 3에 따르면 몇 가지 방법이 있습니다.

  • DX7의 GetAvailableVidMem ()-보통 꽤 좋습니다. 공유 메모리가있는 카드에서는 제대로 작동하지 않습니다.
  • WMI (Windows Management Interface)는 위와 비슷한 결과를 나타냅니다.
  • DxDiag는 두 가지를 모두 사용하여 더 나은 결과를 제공합니다.
  • D3D9에는 GetAvailableTextureMemory () 함수가 있지만 Windows Vista / 7에서만 사용할 수 있습니다.

3 월 8 일 이후 SDK에서 'VideoMemory'라는 DX 샘플을 찾으십시오.


비디오 메모리 용 DX 샘플은 훌륭합니다. 요청하기 전에 발견해야합니다.)
Vincent Scheib

1
공유 메모리를 사용할 컴퓨터 수를 고려하면 DX7 버전을 권장하지 않습니다. 그리고 어떻게이 D3D9 버전을 Vista +에서만 사용할 수 있습니까? XP에 D3D9가있었습니다.
Bahbar

5

Vista 이상 DX9EX의 경우 :

IDXGIDevice * pDXGIDevice;
hr = g_pd3dDevice->QueryInterface(__uuidof(IDXGIDevice), (void **)&pDXGIDevice);
IDXGIAdapter * pDXGIAdapter;
pDXGIDevice->GetAdapter(&pDXGIAdapter);
DXGI_ADAPTER_DESC adapterDesc;
pDXGIAdapter->GetDesc(&adapterDesc);
return adapterDesc.DedicatedVideoMemory;

( http://msdn.microsoft.com/en-us/library/bb174526(v=VS.85).aspx )


호출 Release()pDXGIDevice성공한 후 호출하지 않으면 QueryInterface()메모리 누수가 발생합니다.
Vinz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.