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차원 텍스처로 사용할 수 있는지 여부에 따라 다양한 양의 비디오 메모리를 반환합니다. 표면을 3차원 텍스처에 사용할 수 있는 경우 GetAvailableVidMem 은 AGP 시스템의 로컬 비디오 메모리와 비 로컬 비디오 메모리의 합계를 반환합니다.
GetAvailableVidMem은 현재 디스플레이 메모리 상태의 스냅샷 제공합니다. 사용 가능한 디스플레이 메모리의 양은 표면을 만들고 놓을 때 변경될 수 있습니다. 따라서 사용 가능한 메모리 값은 근사값으로만 사용해야 합니다. 또한 특정 디스플레이 어댑터 카드 서로 다른 두 메모리 유형을 구분하지 않을 수 있습니다. 예를 들어 어댑터는 디스플레이 메모리의 동일한 부분을 사용하여 z 버퍼와 텍스처를 저장할 수 있습니다. 따라서 한 유형의 표면(예: z 버퍼)을 할당하면 다른 유형의 표면(텍스처)에 사용할 수 있는 디스플레이 메모리 양에 영향을 줄 수 있습니다. 따라서 동적 사용(예: 텍스처 매핑)에 사용할 수 있는 메모리 양을 결정하기 전에 먼저 애플리케이션의 고정 리소스(예: 전면 및 후면 버퍼 및 z-버퍼)를 할당하는 것이 가장 좋습니다.
GetAvailableVidMem 은 이전 DirectX IDirectDraw 인터페이스 버전에서 구현되지 않았습니다.
요구 사항
대상 플랫폼 | Windows |
헤더 | ddraw.h |
라이브러리 | Ddraw.lib |
DLL | Ddraw.dll |