Partager via


Méthode IDirectDraw7::GetAvailableVidMem (ddraw.h)

Récupère la quantité totale de mémoire d’affichage disponible et la quantité de mémoire d’affichage actuellement disponible pour un type de surface donné.

Syntaxe

HRESULT GetAvailableVidMem(
  [in]  LPDDSCAPS2 unnamedParam1,
  [out] LPDWORD    unnamedParam2,
  [out] LPDWORD    unnamedParam3
);

Paramètres

[in] unnamedParam1

Pointeur vers une structure DDSCAPS2 qui indique les fonctionnalités matérielles de la surface proposée.

[out] unnamedParam2

Pointeur vers une variable qui reçoit la quantité totale de mémoire d’affichage disponible, en octets. La valeur reçue reflète la mémoire vidéo totale, moins la mémoire vidéo requise pour la surface principale et les caches privés que le pilote d’affichage réserve.

[out] unnamedParam3

Pointeur vers une variable qui reçoit la quantité de mémoire d’affichage actuellement libre qui peut être allouée à une surface qui correspond aux fonctionnalités spécifiées par la structure sur lpDDSCaps2.

Valeur retournée

Si la méthode réussit, la valeur de retour est DD_OK.

En cas d’échec, la méthode peut retourner l’une des valeurs d’erreur suivantes :

  • DDERR_INVALIDCAPS
  • DDERR_INVALIDOBJECT
  • DDERR_INVALIDPARAMS
  • DDERR_NODIRECTDRAWHW

Notes

L’exemple C++ suivant montre comment utiliser GetAvailableVidMem pour déterminer la mémoire d’affichage totale et libre disponible pour les surfaces de mappage de textures :

// 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;


Si l’indicateur DDSCAPS_VIDEOMEMORY est défini sur la surface, GetAvailableVidMem retourne différentes quantités de mémoire vidéo selon que la surface peut être utilisée ou non comme texture 3D. Si la surface peut être utilisée pour les textures 3D, GetAvailableVidMem retourne la somme de la mémoire vidéo locale et de la mémoire vidéo non locale sur les systèmes AGP.

GetAvailableVidMem fournit uniquement un instantané de l’état actuel de la mémoire d’affichage. La quantité de mémoire d’affichage libre est susceptible de changer à mesure que des surfaces sont créées et libérées. Par conséquent, vous devez utiliser la valeur de mémoire libre uniquement comme approximation. En outre, un adaptateur d’affichage particulier carte peut ne pas faire de distinction entre deux types de mémoire différents. Par exemple, l’adaptateur peut utiliser la même partie de la mémoire d’affichage pour stocker les z-buffers et les textures. Ainsi, l’allocation d’un type de surface (par exemple, un z-buffer) peut affecter la quantité de mémoire d’affichage disponible pour un autre type de surface (textures). Par conséquent, il est préférable d’allouer d’abord les ressources fixes d’une application (telles que les mémoires tampons avant et arrière et les mémoires tampons z) avant de déterminer la quantité de mémoire disponible pour une utilisation dynamique (par exemple, le mappage de textures).

GetAvailableVidMem n’a pas été implémenté dans la version précédente de l’interface DirectX IDirectDraw.

Spécifications

   
Plateforme cible Windows
En-tête ddraw.h
Bibliothèque Ddraw.lib
DLL Ddraw.dll

Voir aussi

IDirectDraw7