ComComComCom/DX .. D3D
com 객체인 IDirect3DDevice9 , IDirect3D9 해제하기
몰라아
2017. 6. 17. 18:59
모든 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;
}
}