IDirectDraw7::GetAvailableVidMem-Methode (ddraw.h)
Ruft die Gesamtmenge des verfügbaren Anzeigespeichers und die Menge an Anzeigespeicher ab, die derzeit für einen bestimmten Oberflächentyp frei ist.
Syntax
HRESULT GetAvailableVidMem(
[in] LPDDSCAPS2 unnamedParam1,
[out] LPDWORD unnamedParam2,
[out] LPDWORD unnamedParam3
);
Parameter
[in] unnamedParam1
Ein Zeiger auf eine DDSCAPS2-Struktur , die die Hardwarefunktionen der vorgeschlagenen Oberfläche angibt.
[out] unnamedParam2
Ein Zeiger auf eine Variable, die die Gesamtmenge des verfügbaren Anzeigespeichers in Bytes empfängt. Der empfangene Wert gibt den gesamten Videospeicher abzüglich des für die primäre Oberfläche erforderlichen Videospeichers und aller privaten Caches an, die der Anzeigetreiber reserviert.
[out] unnamedParam3
Ein Zeiger auf eine Variable, die die Menge des derzeit freien Anzeigespeichers empfängt, der einer Oberfläche zugeordnet werden kann, die den in der Struktur unter lpDDSCaps2 angegebenen Funktionen entspricht.
Rückgabewert
Wenn die Methode erfolgreich ist, wird der Rückgabewert DD_OK.
Wenn ein Fehler auftritt, kann die -Methode einen der folgenden Fehlerwerte zurückgeben:
- DDERR_INVALIDCAPS
- DDERR_INVALIDOBJECT
- DDERR_INVALIDPARAMS
- DDERR_NODIRECTDRAWHW
Hinweise
Im folgenden C++-Beispiel wird veranschaulicht, wie GetAvailableVidMem verwendet wird, um sowohl den gesamten als auch den freien Anzeigespeicher zu bestimmen, der für Texture Map-Oberflächen verfügbar ist:
// For this example, the lpDD variable is a valid
// pointer to an IDirectDraw7 interface.
LPDIRECTDRAW7 lpDD;
DDSCAPS2 ddsCaps2;
DWORD dwTotal;
DWORD dwFree;
HRESULT hr;
hr = lpDD->QueryInterface(IID_IDirectDraw7, &lpDD);
if (FAILED(hr))
return hr;
// Initialize the structure.
ZeroMemory(&ddsCaps2, sizeof(ddsCaps2));
ddsCaps2.dwCaps = DDSCAPS_TEXTURE;
hr = lpDD->GetAvailableVidMem(&ddsCaps2, &dwTotal, &dwFree);
if (FAILED(hr))
return hr;
Wenn auf der Oberfläche das flag DDSCAPS_VIDEOMEMORY festgelegt ist, gibt GetAvailableVidMem unterschiedliche Mengen an Videospeicher zurück, je nachdem, ob die Oberfläche als 3D-Textur verwendet werden kann. Wenn die Oberfläche für 3D-Texturen verwendet werden kann, gibt GetAvailableVidMem die Summe des lokalen Videospeichers und des nicht lokalen Videospeichers auf AGP-Systemen zurück.
GetAvailableVidMem stellt nur eine Momentaufnahme des aktuellen Anzeigespeicherzustands bereit. Die Menge des freien Anzeigespeichers kann sich ändern, wenn Oberflächen erstellt und freigegeben werden. Daher sollten Sie den Wert des freien Arbeitsspeichers nur als Näherung verwenden. Darüber hinaus kann eine bestimmte Grafikkarte Karte keinen Unterschied zwischen zwei verschiedenen Speichertypen machen. Beispielsweise kann der Adapter denselben Teil des Anzeigespeichers zum Speichern von Z-Puffern und Texturen verwenden. Daher kann die Zuweisung eines Oberflächentyps (z. B. eines Z-Puffers) die Menge des Anzeigespeichers beeinflussen, der für einen anderen Oberflächentyp (Texturen) verfügbar ist. Daher ist es am besten, zuerst die festen Ressourcen einer Anwendung (z. B. Front- und Backpuffer und Z-Puffer) zuzuordnen, bevor Sie bestimmen, wie viel Arbeitsspeicher für die dynamische Verwendung (z. B. Texturzuordnung) verfügbar ist.
GetAvailableVidMem wurde in der vorherigen Version der DirectX-IDirectDraw-Schnittstelle nicht implementiert.
Anforderungen
Zielplattform | Windows |
Kopfzeile | ddraw.h |
Bibliothek | Ddraw.lib |
DLL | Ddraw.dll |