Wie frage ich den verfügbaren Videospeicher mit DirectX ab?


Antworten:


8

Gemäß Game Coding Complete 3 gibt es einige Möglichkeiten:

  • GetAvailableVidMem () von DX7 - normalerweise ziemlich gut. Funktioniert bei Karten mit gemeinsamem Speicher nicht besonders gut.
  • WMI (Windows Management Interface) hat ein ähnliches Ergebnis wie oben.
  • DxDiag verwendet beides, um ein besseres Ergebnis zu erzielen.
  • D3D9 verfügt über eine GetAvailableTextureMemory () - Funktion, kann jedoch nur unter Windows Vista / 7 verwendet werden.

Suchen Sie im März 08 oder später nach einem DX-Beispiel mit dem Namen "VideoMemory".


DX-Beispiel für Videospeicher ist großartig - hätte das vor dem Fragen herausfinden sollen;)
Vincent Scheib

1
In Anbetracht der Anzahl der Computer, die gemeinsam genutzten Speicher verwenden, würde ich die Version von DX7 nicht empfehlen. Und wie kann die D3D9-Version davon nur unter Vista + verfügbar sein? D3D9 war dort in XP ...
Bahbar

5

Für DX9EX unter Vista und höher:

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;

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


Nicht Aufruf Release()an pDXGIDevicenach einem erfolgreichen AufrufQueryInterface() zu einem Speicherverlust führen wird.
Vinz
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.