서적 정리/DirectX11을 이용한 3D 게임 프로그래밍 입문
28.Direct3D 응용 프로그램의 디버깅
민돌이2
2022. 1. 20. 18:01
이 책의 예제는 공부목적이기에 오류 처리에 관련된 코드가 대부분 제거되어 있지만, 응용 프로그램 프레임워크는 다수의 Direct3D 함수들이 반환하는 HRESULT 형식의 반환값을 점검해 주는 매크로를 제공한다. d3dUtil.h에 HR매크로로 정의되어 있다.
#if defined(DEBUG) | defined(_DEBUG)
#ifndef HR
#define HR(x) \
{ \
HRESULT hr = (x); \
if(FAILED(hr)) \
{ \
DXTrace(__FILE__, (DWORD)__LINE__, hr, L#x, true); \
} \
}
#endif
#else
#ifndef HR
#define HR(x) (x)
#endif
#endif
이 매크로는 함수의 반환 코드가 실패하면 그 반환 코드를 DXTrace 함수에 넘겨준다.
HRESULT WINAPI DXTraceA( __in_z const char* strFile, __in DWORD dwLine,
__in HRESULT hr, __in_z_opt const char* strMsg, __in BOOL bPopMsgBox );
HRESULT WINAPI DXTraceW( __in_z const char* strFile, __in DWORD dwLine,
__in HRESULT hr, __in_z_opt const WCHAR* strMsg, __in BOOL bPopMsgBox );
이 함수는 오류가 발생항 파일과 행번호를 보여주는 메시지 상자를 띄운다.
여기서 알아야 할 것은 디버그 모드가 아니라면 HR매크로는 아무 일도 하지 않는다.
728x90