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 |