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::GetFrontBufferData 및 IDirect3DDevice9::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를 사용하여 비디오 메모리 텍스처를 업데이트할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 |
|
참고 항목