티스토리 뷰
모든 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;
}
}
'ComComComCom > DX .. D3D' 카테고리의 다른 글
[function] IDirect3DDevice9::SetRenderState (0) | 2017.06.17 |
---|---|
Direct3D 의 시작 장치만들기 IDirect3DDevice9 , IDirect3D9 (COM 객체) (0) | 2017.06.17 |
렌더링 기술 스왑 체인을 이용한 페이지 플리핑 (0) | 2017.06.17 |
[function] IDirect3DDevice9::Present (0) | 2017.06.17 |
[function] IDirect3DDevice9::EndScene (0) | 2017.06.17 |
댓글