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 |