DirectX Graphics 레퍼런스 Direct3D C/C++ 레퍼런스 열거형 D3DPOOL   [목차열람] [주소복사] [슬롯비우기]
D3DPOOL 열거형
 
Microsoft DirectX 9.0

D3DPOOL 열거형


리소스의 버퍼를 보관 유지하는 메모리 클래스를 정의한다.

구문

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

정수

D3DPOOL_DEFAULT

리소스는, 리소스에 대해서 요구된 사용 방법으로 가장 적합한 메모리 풀에 놓여진다. 이것은, 보통, 로컬 비디오 메모리와 AGP (Accelerated Graphics Port) 메모리의 양쪽 모두를 포함한, 비디오 메모리이다. D3DPOOL_DEFAULT 풀은, D3DPOOL_MANAGED 및 D3DPOOL_SYTEMMEM 로부터 독립하고 있어, 리소스가 장치 액세스용의 우선 메모리에 배치되는 것을 지정한다. D3DPOOL_DEFAULT 는, 이 리소스의 메모리 풀 타입으로서 D3DPOOL_MANAGED 또는 D3DPOOL_SYSTEMMEM 의 어느쪽이든을 선택해야 하는 것을 나타내고 있는 것은 아니기 때문에 주의 해야 한다. D3DPOOL_DEFAULT 풀에 배치된 텍스처는, 그것들이 동적 텍스처인가, 또는 Private의 4 문자 코드 (FOURCC) 드라이버 포맷인 경우만 잠글 수 있다. 잠글 수 없는 텍스처에 액세스 하려면 ,IDirect3DDevice9::UpdateSurface ,IDirect3DDevice9::UpdateTexture ,IDirect3DDevice9::GetFrontBufferData ,IDirect3DDevice9::GetRenderTargetData 등의 함수를 사용할 필요가 있다. D3DPOOL_MANAGED 는, 대부분의 애플리케이션으로 D3DPOOL_DEFAULT 보다 적합한 경우가 많다. Microsoft® Direct3D® 런타임에는 미지의, 드라이버 독자적인 픽셀 포맷으로 생성 된 일부의 텍스처를 잠글 수 있는 것에 주의 해야 한다. 또, 텍스처와는 달라, 스왑 체인 백 버퍼, 렌더링 타겟, 정점 버퍼, 및 인덱스 버퍼를 잠글 수 있게도 주의 해야 한다. 장치가 손실했을 경우는, D3DPOOL_DEFAULT 를 사용해 생성 한 리소스는,IDirect3DDevice9::Reset 를 호출하기 전에 릴리즈 해야 한다. 더 자세한 정보는, 「장치의 손실」을 참조할것.

D3DPOOL_DEFAULT 를 사용해 리소스를 생성 할 때 비디오 카드 메모리가 이미 사용되고 있는 경우는, 요구를 채우는 충분한 메모리를 릴리즈 하기 위해서, 관리되는 리소스가 제거된다.

D3DPOOL_MANAGED

리소스는, 필요에 따라서, 장치로부터 액세스 할 수 있는 메모리에 자동적으로 복사 된다. 관리되는 리소스는, 시스템 메모리에 백업 되므로, 장치가 손실했을 때에 생성 다시 할 필요가 없다. 더 자세한 정보는 「리소스의 관리」를 참조할것. 관리되는 리소스는 잠글 수 있다. 시스템 메모리의 복사만이 직접 변경된다. Direct3D 는, 필요에 따라서, 드라이버가 액세스 가능한 메모리로 변경 내용을 복사 한다.

D3DPOOL_SYSTEMMEM

보통, 3D 장치에 의해 액세스 할 수 없는 메모리. 시스템 RAM 를 사용하지만, 페이징 가능한 RAM 가 줄어들 것은 없다. 이러한 리소스는, 장치가 손실해도 생성 다시 할 필요가 없다. 이 풀의 리소스는 잠글 수가 있어 D3DPOOL_DEFAULT 를 사용해 생성 된 메모리 리소스에 대한 IDirect3DDevice9::UpdateSurface 또는 IDirect3DDevice9::UpdateTexture 처리의 전송원으로서 사용할 수 있다.

D3DPOOL_SCRATCH

리소스는, 시스템 RAM 에 배치되므로, 장치가 손실했을 때에 생성 다시 할 필요가 없다. 이러한 리소스는, 장치의 사이즈나 포맷의 제한에 의해 구속되지 않는다. 따라서, Direct3D 장치로부터 액세스 하는 일도, 텍스처 또는 렌더링 타겟으로서 설정하는 일도 할 수 없다. 다만, 이러한 리소스는 항상 생성, 잠금, 복사가 가능하다.

D3DPOOL_FORCE_DWORD

이 열거형을 강제적으로 32 비트 사이즈에 컴파일 한다. 이 값은 사용되지 않았다.

주의

모든 리소스로 모든 풀 타입이 유효하다. 이것에는, 정점 버퍼, 인덱스 버퍼, 텍스처, 및 표면이 포함된다.

렌더링 타겟 및 스텐실 표면용의 풀 타입에는, 몇개의 제약이 있다.

D3DUSAGE_RENDERTARGETD3DUSAGE_DEPTHSTENCIL
D3DPOOL_DEFAULTxx
D3DPOOL_MANAGED
D3DPOOL_SCRATCH
D3DPOOL_SYSTEMMEM

동적인 사용 방법 및 밉맵의 사용 방법에 대해서도, 풀 타입에 제약이 있다.

PoolD3DUSAGE_DYNAMICD3DUSAGE_AUTOGENMIPMAP
D3DPOOL_DEFAULTxx
D3DPOOL_MANAGEDx
D3DPOOL_SCRATCH
D3DPOOL_SYSTEMMEMx

사용 방법 타입의 더 자세한 정보는, 「D3DUSAGE 」를 참조할것.

1 개의 리소스 (밉맵의 밉레벨)에 포함되는 다른 개체에 대해서 복수의 풀을 혼재시킬 수 없다. 또, 풀이 선택되고 있는 경우, 그것을 변경할 수 없다.

애플리케이션에서는, 대부분의 정적 리소스에 대해서 D3DPOOL_MANAGED 를 사용할 필요가 있다. 이것에 의해, 손실한 장치를 처리할 필요가 없어진다. 관리되는 리소스는 런타임에 의해 복원된다. 이것은, 특히 UMA 시스템으로 유효하다. 그 이외의 동적 리소스에 대해서는, D3DPOOL_MANAGED 는 사용하지 않는 것이 좋다. 실제, D3DPOOL_MANAGED 를 D3DUSAGE_DYNAMIC 와 함께 사용해, 인덱스 버퍼 및 정점 버퍼를 생성 할 수 없다.

동적 텍스처의 경우, 비디오 메모리와 시스템 메모리의 텍스처의 페어를 사용해, D3DPOOL_DEFAULT 를 지정해 비디오 메모리를, D3DPOOL_SYSTEMMEM 를 지정해 시스템 메모리를 할당하는 일이 있다. 잠금 메서드를 사용해, 시스템 메모리 텍스처의 비트를 잠금 및 변경할 수 있다. 그 후,IDirect3DDevice9::UpdateTexture 를 사용해, 비디오 메모리 텍스처를 갱신할 수 있다.

열거형의 정보

헤더d3d9types.h
최저한의 operating system Windows 98

참조

IDirect3DDevice9::CreateCubeTexture ,IDirect3DDevice9::CreateIndexBuffer ,IDirect3DDevice9::CreateTexture ,IDirect3DDevice9::CreateVolumeTexture ,IDirect3DDevice9::CreateVertexBuffer ,D3DINDEXBUFFER_DESC ,D3DSURFACE_DESC ,D3DVERTEXBUFFER_DESC ,D3DVOLUME_DESC


© 2002 Microsoft Corporation. All rights reserved.
↑TOP