티스토리 뷰

모든 Direct3D 객체는 COM 객체이다(http://danac.tistory.com/37)

해당 객체는 사용자가 직접 new delete 하는것이 아니라

생성, 소멸 위한 별도의 함수가 존재한다고 하였다.

 

IDirect3DDevice9 , IDirect3D9도 마찬가지.

 

LPDIRECT3D9  g_pD3D;

LPDIRECT3DDEVICE9  g_pD3DDevice;

우리가 객체를 이 순서로 생성을 했다.

 

그렇다면 해제는?

g_pD3D로 g_pD3DDevice 를 만들었으니까

g_pD3DDevice가 아직 있는데 g_pD3D 가 없어지면 안되지 않을까?

 

g_pD3DDevice->Release();

g_pD3D->Release();

해당 순서로 Release 를 불러서 해제 해주면 된다.

 

좀더 안전하게 해제 해주고싶다면

void ReleaseAll()    

{

if(g_pD3DDevice)

{

g_pD3DDevice->Release();

g_pD3DDevice = NULL;

}

if(g_pD3D)

{

g_pD3D->Release();

g_pD3D= NULL;

}

}

 

 

댓글