共用方式為


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 會根據表面是否可以當做立體紋理來傳回不同的視訊記憶體量。 如果介面可用於 3D 紋理, GetAvailableVidMem 會傳回本機視訊記憶體和 AGP 系統上非本機視訊記憶體的總和。

GetAvailableVidMem 僅提供目前顯示記憶體狀態的快照集。 建立和釋放表面時,可用顯示記憶體的數量可能會變更。 因此,您應該只使用可用記憶體值做為近似值。 此外,特定顯示器介面卡可能不區分兩種不同的記憶體類型。 例如,配接器可能會使用相同的顯示記憶體部分來儲存 z 緩衝區和紋理。 因此,配置一種類型的表面 (例如,z 緩衝區) 可能會影響另一種表面 (紋理可用的顯示記憶體量) 。 因此,最好先配置應用程式的固定資源 (,例如前端和後端緩衝區和 z 緩衝區) ,再判斷動態使用的記憶體量 (例如紋理對應) 。

先前的 DirectX IDirectDraw 介面版本未實作GetAvailableVidMem

需求

   
目標平台 Windows
標頭 ddraw.h
程式庫 Ddraw.lib
Dll Ddraw.dll

另請參閱

IDirectDraw7