※ Direct를 사용하면서 Device Lost 발생시 관련 문제사항을 경험 위주로 이 문서에 정리해야겠다.
상황1. 게임 해상도 변경시 Device Lost가 발생한다. 그리고 복구 처리되도록 설계가 되어있다.
그러나 어느날 갑자기 다음 함수가 실패 하는 것!
증상은 이 후 Present(...) 함수도 실패 처리됨. Clear(...) 호출 이후 화면갱신이 이루어지지 않음.
찾아보니 Reset() 함수 호출 전에 생성된 텍스쳐를 모두 Release 해줘야 한다는 것!
( 물론, 개고생해서 찾음 ㅜ.ㅡ )
갑자기 발생한데는 이유가 있다. 근간에 내가 작성한 코드가 문제가 되는것!!
D3DXCreateTexture( ... )로 생성한 텍스쳐와 ID3DXLine가 해상도 변경전(Reset()호출전)에 Release 되지 않았던 것!
해결1. Reset() 호출전에 텍스쳐 삭제 및 ID3DXLine을 맴버로 둔 클래스를 삭제(delete) 후
Device 복구 시 재생성(new) 처리
※ Direct를 사용하면서 Device Lost 발생시 관련 문제사항을 경험 위주로 이 문서에 정리해야겠다.
상황1. 게임 해상도 변경시 Device Lost가 발생한다. 그리고 복구 처리되도록 설계가 되어있다.
그러나 어느날 갑자기 다음 함수가 실패 하는 것!
증상은 이 후 Present(...) 함수도 실패 처리됨. Clear(...) 호출 이후 화면갱신이 이루어지지 않음.
m_pd3dDevice->Reset( &m_d3dpp ); // D3DERR_INVALIDCALL 발생 |
찾아보니 Reset() 함수 호출 전에 생성된 텍스쳐를 모두 Release 해줘야 한다는 것!
( 물론, 개고생해서 찾음 ㅜ.ㅡ )
갑자기 발생한데는 이유가 있다. 근간에 내가 작성한 코드가 문제가 되는것!!
D3DXCreateTexture( ... )로 생성한 텍스쳐와 ID3DXLine가 해상도 변경전(Reset()호출전)에 Release 되지 않았던 것!
해결1. Reset() 호출전에 텍스쳐 삭제 및 ID3DXLine을 맴버로 둔 클래스를 삭제(delete) 후
Device 복구 시 재생성(new) 처리
'비공개' 카테고리의 다른 글
Tool 배포시 유의점 (0) | 2011.10.13 |
---|---|
타입캐스팅 만들기( 변환 함수 ) (0) | 2011.09.22 |
memset 무심결에 잘 모르고 썻던 부분 (0) | 2011.08.16 |
UNICODE와 MBCS 호환성 및 사용법 (0) | 2011.08.11 |
C++에서 템플릿의 선언/정의부를 h/cpp 처럼 분리하기 (0) | 2011.08.09 |