D3DPOOL 열거형

리소스에 대한 버퍼를 보유하는 메모리 클래스를 정의합니다.

Syntax

typedef enum D3DPOOL { 
  D3DPOOL_DEFAULT      = 0,
  D3DPOOL_MANAGED      = 1,
  D3DPOOL_SYSTEMMEM    = 2,
  D3DPOOL_SCRATCH      = 3,
  D3DPOOL_FORCE_DWORD  = 0x7fffffff
} D3DPOOL, *LPD3DPOOL;

상수

D3DPOOL_DEFAULT

리소스는 지정된 리소스에 대해 요청된 사용량 집합에 가장 적합한 메모리 풀에 배치됩니다. 일반적으로 로컬 비디오 메모리와 AGP 메모리를 모두 포함하는 비디오 메모리입니다. D3DPOOL_DEFAULT 풀은 D3DPOOL_MANAGED 및 D3DPOOL_SYSTEMMEM 별개이며, 리소스가 디바이스 액세스를 위해 기본 설정 메모리에 배치되도록 지정합니다. D3DPOOL_DEFAULT D3DPOOL_MANAGED 또는 D3DPOOL_SYSTEMMEM 이 리소스의 메모리 풀 유형으로 선택되어야 했음을 나타내지 않습니다. D3DPOOL_DEFAULT 풀에 배치된 텍스처는 동적 텍스처이거나 프라이빗, FOURCC, 드라이버 형식이 아니면 잠글 수 없습니다. 잠금 해제 가능한 텍스처에 액세스하려면 IDirect3DDevice9::UpdateSurface, IDirect3DDevice9::UpdateTexture, IDirect3DDevice9::GetFrontBufferDataIDirect3DDevice9::GetRenderTargetData와 같은 함수를 사용해야 합니다. D3DPOOL_MANAGED 대부분의 애플리케이션에서 D3DPOOL_DEFAULT 것보다 더 나은 선택일 수 있습니다. Direct3D 런타임에 알려지지 않은 드라이버 전용 픽셀 형식으로 만든 일부 텍스처는 잠글 수 있습니다. 또한 텍스처와 달리 스왑 체인 백 버퍼, 렌더링 대상, 꼭짓점 버퍼 및 인덱스 버퍼를 잠글 수 있습니다. 디바이스가 손실되면 IDirect3DDevice9::Reset을 호출하기 전에 D3DPOOL_DEFAULT 사용하여 만든 리소스를 해제해야 합니다. 자세한 내용은 분실 디바이스(Direct3D 9)를 참조하세요.

D3DPOOL_DEFAULT 사용하여 리소스를 만들 때 비디오 카드 메모리가 이미 커밋된 경우 관리되는 리소스는 요청을 충족하기에 충분한 메모리를 확보하도록 제거됩니다.

D3DPOOL_MANAGED

리소스는 필요에 따라 디바이스 액세스 가능 메모리에 자동으로 복사됩니다. 관리되는 리소스는 시스템 메모리에서 지원되며 디바이스가 손실될 때 다시 만들 필요가 없습니다. 자세한 내용은 리소스 관리(Direct3D 9) 를 참조하세요. 관리되는 리소스를 잠글 수 있습니다. 시스템 메모리 복사만 직접 수정됩니다. Direct3D는 필요에 따라 드라이버 액세스 가능 메모리에 변경 내용을 복사합니다.

Direct3D 9와 Direct3D 9Ex 간의 차이점:
D3DPOOL_MANAGED IDirect3DDevice9에서 유효합니다. 그러나 IDirect3DDevice9Ex에서는 유효하지 않습니다.

 

D3DPOOL_SYSTEMMEM

리소스는 일반적으로 Direct3D 디바이스에서 액세스할 수 없는 메모리에 배치됩니다. 이 메모리 할당은 시스템 RAM을 사용하지만 페이지 가능한 RAM을 줄이지는 않습니다. 이러한 리소스는 디바이스가 손실될 때 다시 만들 필요가 없습니다. 이 풀의 리소스는 잠글 수 있으며 D3DPOOL_DEFAULT 사용하여 만든 메모리 리소스에 대한 IDirect3DDevice9::UpdateSurface 또는 IDirect3DDevice9::UpdateTexture 작업의 원본으로 사용할 수 있습니다.

D3DPOOL_SCRATCH

리소스는 시스템 RAM에 배치되며 디바이스가 손실될 때 다시 만들 필요가 없습니다. 이러한 리소스는 디바이스 크기 또는 형식 제한에 의해 바인딩되지 않습니다. 이 때문에 Direct3D 디바이스에서 이러한 리소스에 액세스하거나 텍스처 또는 렌더링 대상으로 설정할 수 없습니다. 그러나 이러한 리소스는 항상 생성, 잠금 및 복사할 수 있습니다.

D3DPOOL_FORCE_DWORD

이 열거형을 강제로 32비트 크기로 컴파일합니다. 이 값이 없으면 일부 컴파일러에서 이 열거형을 32비트가 아닌 크기로 컴파일할 수 있습니다. 이 값은 사용되지 않습니다.

설명

모든 풀 형식은 꼭짓점 버퍼, 인덱스 버퍼, 텍스처 및 표면을 비롯한 모든 리소스에서 유효합니다.

다음 표에서는 렌더링 대상, 깊이 스텐실 및 동적 및 Mipmap 사용에 대한 풀 형식에 대한 제한을 나타냅니다. x는 호환되는 조합을 나타냅니다. x가 부족할 경우 비호환성을 나타냅니다.

D3DUSAGE_RENDERTARGET D3DUSAGE_DEPTHSTENCIL
D3DPOOL_DEFAULT x x
D3DPOOL_MANAGED
D3DPOOL_SCRATCH
D3DPOOL_SYSTEMMEM

 

D3DUSAGE_DYNAMIC D3DUSAGE_AUTOGENMIPMAP
D3DPOOL_DEFAULT x x
D3DPOOL_MANAGED x
D3DPOOL_SCRATCH
D3DPOOL_SYSTEMMEM x

 

사용 유형에 대한 자세한 내용은 D3DUSAGE를 참조하세요.

풀은 하나의 리소스(밉맵의 밉 수준) 내에 포함된 다른 개체에 대해 혼합할 수 없으며 풀을 선택하면 변경할 수 없습니다.

애플리케이션은 대부분의 정적 리소스에 D3DPOOL_MANAGED 사용해야 합니다. 이렇게 하면 애플리케이션이 손실된 디바이스를 처리할 필요가 없으므로 애플리케이션은 대부분의 정적 리소스에 사용해야 합니다. (관리되는 리소스는 런타임에 의해 복원됩니다.) 이는 UMA(통합 메모리 아키텍처) 시스템에 특히 유용합니다. 다른 동적 리소스는 D3DPOOL_MANAGED 적합하지 않습니다. 실제로 인덱스 버퍼와 꼭짓점 버퍼는 D3DUSAGE_DYNAMIC 함께 D3DPOOL_MANAGED 사용하여 만들 수 없습니다.

동적 텍스처의 경우 비디오 메모리와 시스템 메모리 텍스처 쌍을 사용하여 D3DPOOL_DEFAULT 사용하여 비디오 메모리를 할당하고 D3DPOOL_SYSTEMMEM 사용하여 시스템 메모리를 할당하는 것이 좋습니다. 잠금 방법을 사용하여 시스템 메모리 텍스처의 비트를 잠그고 수정할 수 있습니다. 그런 다음 IDirect3DDevice9::UpdateTexture를 사용하여 비디오 메모리 텍스처를 업데이트할 수 있습니다.

요구 사항

요구 사항
헤더
D3D9Types.h

참고 항목

Direct3D 열거형

D3DUSAGE

IDirect3DDevice9::CreateCubeTexture

IDirect3DDevice9::CreateIndexBuffer

IDirect3DDevice9::CreateTexture

IDirect3DDevice9::CreateVolumeTexture

IDirect3DDevice9::CreateVertexBuffer

D3DINDEXBUFFER_DESC

D3DSURFACE_DESC

D3DVERTEXBUFFER_DESC

D3DVOLUME_DESC