DirectX 3D/DirectX92016. 6. 14. 15:43

Surface나 그 밖의 다양한 Direct3D 자원들은 여러 가지 종류의 메모리 풀에 보관 할 수 있다. 메모리 풀은 D3DPOOL 열겨형의 멤버로 지정되며, 이용할 수 있는 메모리 풀에는 다음과 같은 것들이 있다.

=============================================================

D3DPOOL_DEFAULT - 디폴트 메모리 풀은 자원의 타입과 이용 방식에 가장 적합한 자원들을 메모리에 보관하도록 Direct3D에 요청한다. 여기서 말하는 자원이란 비디오 메모리나 AGP 메모리, 혹은 시스템 메모리 등을 말하는 것으로, 디폴트 풀 내의 자원은 반드시 IDirect3DDevice9::Reset호출 이전에 파괴(해제)되어야 하며, reset 호출 이후에 다시 초기화되어야 한다.

=============================================================

D3DPOOL_MANAGED - 관리 풀에 보관된 자원은 Direct3D에 의해 관리된다.(즉, 필요에 의해 자동으로 비디오 메모리나 AGP 메모리로 옮겨진다). 부가적으로 자원의 백업 복사본이 시스템 메모리 내에 보관되는데, 애플리케이션이 자원에 접근하고 수정할 때는 시스템 복사본을 이용하며, Direct3D는 필요에 따라 자동으로 이를 메모리에 갱신한다.

=============================================================

D3DPOOL_SYSTEMMEM - 시스템 메모리 내에 보관될 자원을 지정한다.

=============================================================

D3DPOOL_SCRATCH - 시스템 메모리 내에 보관될 자원을 지정한다. 앞서의 D3DPOOL_SYSTEMMEM과는 달리 이 풀의 자원은 그래픽 장치의 제한을 따라서는 안 된다. 따라서 장치는 이 풀 내의 자원에 직접 접근을 할 수 없지만, 자원들 두 풀 사이에 서로 복사하는 것은 가능하다.

Posted by 멜데스