Bagaimana cara saya meminta memori video yang tersedia menggunakan DirectX?

16

Bagaimana Anda menanyakan jumlah VRAM yang tersedia saat menggunakan DirectX?

Vincent Scheib
sumber

Jawaban:

8

Menurut Game Coding Complete 3, ada beberapa cara:

  • DX7's GetAvailableVidMem () - biasanya cukup bagus. Tidak berfungsi dengan baik pada kartu dengan memori bersama.
  • WMI (Windows Management Interface) memiliki hasil yang mirip dengan yang di atas.
  • DxDiag menggunakan keduanya untuk memberikan hasil yang lebih baik.
  • D3D9 memiliki fungsi GetAvailableTextureMemory (), tetapi hanya dapat digunakan pada Windows Vista / 7.

Cari sampel DX pada 08 Maret atau lebih kemudian SDK yang disebut 'VideoMemory'.

Bebek Komunis
sumber
Sampel DX untuk Memori Video hebat - seharusnya ditemukan sebelum bertanya;)
Vincent Scheib
1
Mengingat berapa banyak komputer yang akan menggunakan memori bersama, saya tidak akan merekomendasikan versi DX7. Dan bagaimana versi D3D9 ini hanya tersedia di Vista +? D3D9 ada di sana di XP ...
Bahbar
5

Untuk DX9EX di Vista dan yang lebih baru:

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;

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

Vincent Scheib
sumber
Tidak menelepon Release()pada pDXGIDevicesetelah panggilan sukses untuk QueryInterface()akan menyebabkan kebocoran memori.
Vinz