Làm cách nào để truy vấn bộ nhớ video khả dụng bằng DirectX?


Câu trả lời:


8

Theo Game Coding Complete 3, có một vài cách:

  • GetAv AvailableVidMem () của DX7 - thường khá tốt. Không hoạt động quá tốt trên thẻ với bộ nhớ chia sẻ.
  • WMI (Giao diện quản lý Windows) có kết quả tương tự như trên.
  • DxDiag sử dụng cả hai để cho kết quả tốt hơn.
  • D3D9 có chức năng GetAv AvailableTextureMemory (), nhưng chỉ có thể được sử dụng trên Windows Vista / 7.

Hãy tìm mẫu DX vào ngày 08 tháng 3 hoặc sau đó SDK có tên 'VideoMemory'.


Mẫu DX cho Bộ nhớ video rất tuyệt - nên tìm thấy điều đó trước khi hỏi;)
Vincent Scheib

1
Xem xét có bao nhiêu máy tính sẽ sử dụng bộ nhớ dùng chung, tôi sẽ không đề xuất phiên bản của DX7. Và làm thế nào phiên bản D3D9 này chỉ có trên Vista +? D3D9 đã ở đó trong XP ...
Bahbar

5

Dành cho DX9EX trên Vista trở lên:

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;

(từ http://msdn.microsoft.com/en-us/l Library / bb174526 ( v = VS85 ) .aspx )


Không gọi Release()trên pDXGIDevicesau khi một cuộc gọi thành công QueryInterface()sẽ dẫn đến rò rỉ bộ nhớ.
Vinz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.