이 책의 예제는 공부목적이기에 오류 처리에 관련된 코드가 대부분 제거되어 있지만, 응용 프로그램 프레임워크는 다수의 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
'서적 정리 > DirectX11을 이용한 3D 게임 프로그래밍 입문' 카테고리의 다른 글
32.색상 표현의 기초 (0) | 2022.01.20 |
---|---|
31.모형의 표현 (0) | 2022.01.20 |
30.3차원의 환상 (0) | 2022.01.20 |
29.Direct3D의 초기화 요약 (0) | 2022.01.20 |
27.예제 응용 프로그램 프레임워크 (0) | 2022.01.20 |
26.타이밍과 애니메이션 (0) | 2022.01.20 |
25.Direct3D의 초기화 (0) | 2022.01.20 |
24.Direct3D 기본지식 (0) | 2022.01.20 |
댓글