Compartilhar via


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

Recupera a quantidade total de memória de exibição disponível e a quantidade de memória de exibição atualmente livre para um determinado tipo de superfície.

Sintaxe

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

Parâmetros

[in] unnamedParam1

Um ponteiro para uma estrutura DDSCAPS2 que indica os recursos de hardware da superfície proposta.

[out] unnamedParam2

Um ponteiro para uma variável que recebe a quantidade total de memória de exibição disponível, em bytes. O valor recebido reflete a memória total do vídeo, menos a memória de vídeo necessária para a superfície primária e todos os caches privados que o driver de exibição reserva.

[out] unnamedParam3

Um ponteiro para uma variável que recebe a quantidade de memória de exibição atualmente livre que pode ser alocada para uma superfície que corresponde aos recursos especificados pela estrutura em lpDDSCaps2.

Valor retornado

Se o método for bem-sucedido, o valor retornado será DD_OK.

Se falhar, o método poderá retornar um dos seguintes valores de erro:

  • DDERR_INVALIDCAPS
  • DDERR_INVALIDOBJECT
  • DDERR_INVALIDPARAMS
  • DDERR_NODIRECTDRAWHW

Comentários

O exemplo do C++ a seguir demonstra como usar GetAvailableVidMem para determinar a memória de exibição total e gratuita disponível para superfícies de mapa de textura:

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


Se a superfície tiver o sinalizador DDSCAPS_VIDEOMEMORY definido, GetAvailableVidMem retornará diferentes quantidades de memória de vídeo, dependendo se a superfície pode ser usada como uma textura 3D. Se a superfície puder ser usada para texturas 3D, GetAvailableVidMem retornará a soma da memória de vídeo local e da memória de vídeo não local em sistemas AGP.

GetAvailableVidMem fornece apenas uma instantâneo do estado atual de memória de exibição. A quantidade de memória de exibição gratuita está sujeita a alterações à medida que as superfícies são criadas e liberadas. Portanto, você deve usar o valor de memória livre apenas como uma aproximação. Além disso, um adaptador de exibição específico cartão pode não fazer distinção entre dois tipos de memória diferentes. Por exemplo, o adaptador pode usar a mesma parte da memória de exibição para armazenar buffers z e texturas. Portanto, alocar um tipo de superfície (por exemplo, um buffer z) pode afetar a quantidade de memória de exibição disponível para outro tipo de superfície (texturas). Portanto, é melhor primeiro alocar os recursos fixos de um aplicativo (como buffers front-and-back e z-buffers) antes de determinar a quantidade de memória disponível para uso dinâmico (como mapeamento de textura).

GetAvailableVidMem não foi implementado na versão anterior da interface IDirectDraw do DirectX.

Requisitos

   
Plataforma de Destino Windows
Cabeçalho ddraw.h
Biblioteca Ddraw.lib
DLL Ddraw.dll

Confira também

IDirectDraw7