Bagikan melalui


Metode IDirectDraw7::GetAvailableVidMem (ddraw.h)

Mengambil jumlah total memori tampilan yang tersedia dan jumlah memori tampilan yang saat ini bebas untuk jenis permukaan tertentu.

Sintaks

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

Parameter

[in] unnamedParam1

Pointer ke struktur DDSCAPS2 yang menunjukkan kemampuan perangkat keras dari permukaan yang diusulkan.

[out] unnamedParam2

Penunjuk ke variabel yang menerima jumlah total memori tampilan yang tersedia, dalam byte. Nilai yang diterima mencerminkan total memori video, dikurangi memori video yang diperlukan untuk permukaan utama dan cache privat apa pun yang dicadangkan driver tampilan.

[out] unnamedParam3

Pointer ke variabel yang menerima jumlah memori tampilan yang saat ini gratis yang dapat dialokasikan untuk permukaan yang cocok dengan kemampuan yang ditentukan oleh struktur di lpDDSCaps2.

Menampilkan nilai

Jika metode berhasil, nilai yang dikembalikan DD_OK.

Jika gagal, metode dapat mengembalikan salah satu nilai kesalahan berikut:

  • DDERR_INVALIDCAPS
  • DDERR_INVALIDOBJECT
  • DDERR_INVALIDPARAMS
  • DDERR_NODIRECTDRAWHW

Keterangan

Contoh C++ berikut menunjukkan cara menggunakan GetAvailableVidMem untuk menentukan memori tampilan total dan bebas yang tersedia untuk permukaan peta tekstur:

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


Jika permukaan memiliki set bendera DDSCAPS_VIDEOMEMORY , GetAvailableVidMem mengembalikan jumlah memori video yang berbeda tergantung pada apakah permukaan dapat digunakan sebagai tekstur 3-D. Jika permukaan dapat digunakan untuk tekstur 3-D, GetAvailableVidMem mengembalikan jumlah memori video lokal dan memori video non-lokal pada sistem AGP.

GetAvailableVidMem hanya menyediakan rekam jepret dari status memori tampilan saat ini. Jumlah memori tampilan bebas dapat berubah saat permukaan dibuat dan dilepaskan. Oleh karena itu, Anda harus menggunakan nilai memori gratis hanya sebagai perkiraan. Selain itu, kartu adaptor tampilan tertentu mungkin tidak membuat perbedaan antara dua jenis memori yang berbeda. Misalnya, adaptor mungkin menggunakan bagian memori tampilan yang sama untuk menyimpan z-buffer dan tekstur. Jadi, mengalokasikan satu jenis permukaan (misalnya, z-buffer) dapat memengaruhi jumlah memori tampilan yang tersedia untuk jenis permukaan lain (tekstur). Oleh karena itu, yang terbaik adalah terlebih dahulu mengalokasikan sumber daya tetap aplikasi (seperti buffer depan dan belakang dan z-buffer) sebelum menentukan berapa banyak memori yang tersedia untuk penggunaan dinamis (seperti pemetaan tekstur).

GetAvailableVidMem tidak diimplementasikan dalam versi antarmuka DirectX IDirectDraw sebelumnya.

Persyaratan

   
Target Platform Windows
Header ddraw.h
Pustaka Ddraw.lib
DLL Ddraw.dll

Lihat juga

IDirectDraw7