IDirectDraw7::GetAvailableVidMem メソッド (ddraw.h)
使用可能な表示メモリの合計量と、特定の種類のサーフェスに対して現在空いている表示メモリの量を取得します。
構文
HRESULT GetAvailableVidMem(
[in] LPDDSCAPS2 unnamedParam1,
[out] LPDWORD unnamedParam2,
[out] LPDWORD unnamedParam3
);
パラメーター
[in] unnamedParam1
提案されたサーフェスのハードウェア機能を示す DDSCAPS2 構造体へのポインター。
[out] unnamedParam2
使用可能な表示メモリの合計量をバイト単位で受け取る変数へのポインター。 受信した値は、合計ビデオ メモリを反映し、プライマリ サーフェスに必要なビデオ メモリと、ディスプレイ ドライバーが予約するプライベート キャッシュを差し引きます。
[out] unnamedParam3
lpDDSCaps2 の構造体で指定された機能に一致するサーフェスに割り当てることができる、現在空いている表示メモリの量を受け取る変数へのポインター。
戻り値
メソッドが成功した場合、戻り値はDD_OK。
失敗した場合、メソッドは次のいずれかのエラー値を返すことができます。
- DDERR_INVALIDCAPS
- DDERR_INVALIDOBJECT
- DDERR_INVALIDPARAMS
- DDERR_NODIRECTDRAWHW
解説
次の C++ の例では、 GetAvailableVidMem を使用して、テクスチャ マップ サーフェスで使用可能な合計表示メモリと空き表示メモリの両方を決定する方法を示します。
// 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;
サーフェスに DDSCAPS_VIDEOMEMORY フラグが設定されている場合、 GetAvailableVidMem は、サーフェスを 3-D テクスチャとして使用できるかどうかに応じて、異なる量のビデオ メモリを返します。 サーフェスを 3-D テクスチャに使用できる場合、 GetAvailableVidMem は、AGP システム上のローカル ビデオ メモリとローカル以外のビデオ メモリの合計を返します。
GetAvailableVidMem は、現在の表示メモリ状態のスナップショットのみを提供します。 サーフェスが作成および解放されると、空きディスプレイ メモリの量が変更される可能性があります。 したがって、空きメモリ値は近似値としてのみ使用する必要があります。 さらに、特定のディスプレイ アダプター カードでは、2 つの異なるメモリの種類を区別しない場合があります。 たとえば、アダプターは、表示メモリの同じ部分を使用して z バッファーとテクスチャを格納する場合があります。 そのため、1 種類のサーフェス (z バッファーなど) を割り当てると、別の種類のサーフェス (テクスチャ) で使用できる表示メモリの量に影響する可能性があります。 そのため、動的に使用できるメモリの量 (テクスチャ マッピングなど) を決定する前に、まずアプリケーションの固定リソース (フロント バッファーとバック バッファー、z バッファーなど) を割り当てることをお勧めします。
GetAvailableVidMem は、以前の DirectX IDirectDraw インターフェイス バージョンでは実装されませんでした。
要件
対象プラットフォーム | Windows |
ヘッダー | ddraw.h |
Library | Ddraw.lib |
[DLL] | Ddraw.dll |