Platform SDK: DirectX |
IDirectDraw7::GetAvailableVidMem メソッドは、利用可能なディスプレイ メモリの総容量、およびサーフェスの与えられたタイプに対するディスプレイ メモリの現在の空き容量を取得する。
HRESULT GetAvailableVidMem( LPDDSCAPS2 lpDDSCaps2, LPDWORD lpdwTotal, LPDWORD lpdwFree );
成功すれば、DD_OK を返す。
失敗すれば、以下のエラー値のいずれかを返す。
DDERR_INVALIDCAPS |
DDERR_INVALIDOBJECT |
DDERR_INVALIDPARAMS |
DDERR_NODIRECTDRAWHW |
lpdwTotal または lpdwFree に NULL が渡された場合、パラメータに対する値は返されない。
次の C++ の例では、IDirectDraw7::GetAvailableVidMem を使用して、テクスチャ マップ サーフェスで利用可能なディスプレイ メモリの総容量および空き容量の両方を決定する方法を示す。
// たとえば、lpDD 変数は IDirectDraw インターフェイスへの // 有効なポインタとなる。 LPDIRECTDRAW7 lpDD; DDSCAPS2 ddsCaps2; DWORD dwTotal; DWORD dwFree; HRESULT hr; hr = lpDD->QueryInterface(IID_IDirectDraw7, &lpDD); if (FAILED(hr)) return hr; // 構造体を初期化する。 ZeroMemory(&ddsCaps2, sizeof(ddsCaps2)); ddsCaps2.dwCaps = DDSCAPS_TEXTURE; hr = lpDD->GetAvailableVidMem(&ddsCaps2, &dwTotal, &dwFree); if (FAILED(hr)) return hr;
サーフェスに DDSCAPS_VIDEOMEMORY フラグ セットがある場合、このメソッドは、サーフェスが 3D テクスチャとして使用できるかどうかによって異なるビデオ メモリ容量を返す。サーフェスが 3D テクスチャとして使用できる場合、GetAvailableVidMem メソッドは AGP システムのローカルおよび非ローカル ビデオ メモリの総容量を返す。
このメソッドは、現在のディスプレイメモリの瞬間的な状態だけを提供する。ディスプレイ メモリの空き容量は、サーフェスの作成と解放により変化する。したがって、空きメモリ容量の値は単に近似値として使用すべきである。また、特定のディスプレイ アダプタ カードで 2 つの異なるメモリ タイプを区別しない場合もある。たとえば、アダプタはディスプレイ メモリの同じ部分を使って、Z バッファとテクスチャを格納する場合がある。このため、サーフェスのある特定のタイプ (たとえば、Z バッファ) を割り当てたとき、ほかのタイプのサーフェス (たとえば、テクスチャ) で利用できるディスプレイ メモリの容量に影響する場合がある。したがって、動的使用 (テクスチャ マッピング など) で利用できるメモリ容量を決める前に、アプリケーションの固定リソース (フロントとバック バッファ、および Z バッファなど) を最初に割り当てすることが最良の方法となる。
このメソッドは、IDirectDraw インターフェイスには実装されていない。
Windows NT/2000 :Windows 2000 が必要。
Windows 95/98 : Windows 98 が必要。
ヘッダー : ddraw.h で宣言。