5edf7c19

IDirectDraw2:: GetAvailableVidMem


HRESULT GetAvailableVidMem (LPDDSCAPS lpDDSCaps,

LPDWORD lpdwTotal, LPDWORD lpdwFree);

Возвращает общую сумму доступной памяти дисплея и количество свободной памяти дисплея в настоящее время. Если передан NULL или  lpdwTotal или lpdwFree , значение для этого параметра не возвращается.

Возвращает DD_OK если успешно, или одно из следующих значений ошибки:

DDERR_INVALIDOBJECT         DDERR_NODIRECTDRAWHW           

DDERR_INVALIDPARAMS       DDERR_INVALIDCAPS          

lpDDSCaps

Адрес структуры DDSCAPS, которая содержит аппаратные возможности поверхности.

lpdwTotal

Адрес двойного слова, которое будет заполнено общей суммой доступной памяти дисплея.

lpdwFree

Адрес двойного слова, которое будет заполнено количеством свободной памяти дисплея в настоящее время .

Следующий пример на C ++ показывает использование IDirectDraw2:: GetAvailableVidMem, чтобы определить и общее количество и свободную память дисплея, доступную для поверхностей карты текстуры:

LPDIRECTDRAW2 lpDD2;

DDSCAPS ddsCaps;

DWORD dwTotal;

DWORD dwFree;

ddres = lpDD->QueryInterface(IID_IDirectDraw2,

&lpDD2); if (FAILED(ddres))

                         ...

ddsCaps.dwCaps = DDSCAPS_TEXTURE;

ddres = lpDD2->GetAvailableVidMem(&ddsCaps,

&dwTotal, &dwFree);

if

(FAILED(ddres))

                ...

Этот метод дает только текущее состояние памяти дисплея. Количество свободной памяти дисплея подчинено изменению, поскольку поверхности создаются и разрушаются. Следовательно, свободное значение памяти должно использоваться только как грубая оценка. Кроме того, специфическая плата адаптера дисплея не может делать никакого различия между двумя различными типами памяти. Например, она может использовать ту же самую часть памяти дисплея, чтобы хранить z-буфера и текстуры. Следовательно, распределение одного типа поверхности (например, z-буфера) может воздействовать на количество памяти дисплея, доступной для другого типа поверхности (например, текстуры). Следовательно, самое лучшее - это сначала распределить фиксированные ресурсы прикладной программы (типа переднего, обратного и z-буферов) перед определением сколько памяти доступно для динамического использования (типа отображения текстуры).

Чтобы гарантировать согласованность с COM интерфейсом, этот метод - не,  член интерфейса IDirectDraw, но - интерфейса IDirectDraw2. Чтобы использовать этот метод, Вы должны сначала сделать запрос для интерфейса IDirectDraw2. Для большего количества информации, см. Интерфейс IDirectDraw2.



Содержание раздела