DirectX Graphics 프로그래밍 가이드 Direct3D 의 기초지식 리소스 리소스의 관리   [목차열람] [주소복사] [슬롯비우기]
리소스의 관리
 
Microsoft DirectX 9.0

리소스의 관리


리소스 관리는, 시스템 메모리 스토리지로부터 장치가 액세스 가능한 스토리지에 리소스를 옮겨, 장치가 액세스 가능한 스토리지로부터 리소스를 파기하는 프로세스이다. Microsoft® Direct3D® 런타임에는, LRU (least-recently-used) 우선 방식에 근거하는 독자적인 관리 알고리즘이 있다. 1 개의 프레임 (IDirect3DDevice9::BeginScene 호출과 IDirect3DDevice9::EndScene 호출동안) 내에서, 장치가 액세스 가능한 메모리에 공존할 수 있는 리소스수보다 많은 리소스가 검출되면 most-recently-used 우선 방식으로 바뀐다.

관리되는 리소스를 지정하려면 , 생성시에 D3DPOOL_MANAGED 플래그를 사용한다. 관리되는 리소스는, 장치의 손실 상태와 처리 가능 상태와의 사이의 처리시에 보관 유지된다. 장치는,IDirect3DDevice9::Reset 호출에 의해 복원할 수 있어 이러한 리소스는 artwork에 재로드하지 않아도 계속 정상적으로 기능한다. 다만, 장치를 파기해 생성 다시 할 필요가 있는 경우, D3DPOOL_MANAGED 를 사용해 생성 된 리소스는 모두 생성 다시 할 필요가 있다.

리소스를 디폴트의 풀에의 배치를 지정하려면 , 생성시에 D3DPOOL_DEFAULT 플래그를 사용한다. 디폴트의 풀내의 리소스는, 장치의 손실 상태와 처리 가능 상태간의 처리에서는 보관 유지되지 않는다. 이러한 리소스는 Reset 를 호출하기 전에 릴리즈 해, 그 후로 생성 다시 할 필요가 있다.

장치의 손실 상태의 더 자세한 정보는, 「장치의 손실」을 참조할것.

리소스 관리는, 모든 타입 및 사용법에 대해서 지원 되고 있는 것은 아니기 때문에 주의 해야 한다. 예를 들어, D3DUSAGE_RENDERTARGET 플래그로 생성 된 개체는 지원하지 않는다. 또, 높은 빈도로 내용이 변경되는 개체에 대해서는, 리소스 관리는 장려하지 않는다. 예를 들어, 모든 프레임을 변경하는 관리되는 정점 버퍼의 경우, 어떠한 하드웨어의 퍼포먼스를 크게 저하시키는 일이 있다. 다만, 이것은 텍스처 소스에 관한 문제는 아니다.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP