다음을 통해 공유


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

추가 정보

IDirectDraw7