Freigeben über


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

Weitere Informationen

IDirectDraw7