Direct3D 디버그 정보 사용(Direct3D 9)
디버그하는 동안 Direct3D 개체에 대한 자세한 정보를 찾으려고 하시나요? instance 경우 다음 스크린샷은 watch 창에서 Direct3D 인터페이스를 볼 때 일반적으로 표시되는 내용을 보여줍니다.
개체의 모든 속성을 포함하는 미러된 개체를 watch 창에서 볼 수 있도록 핵심 디버그 개체를 사용하도록 설정할 수 있습니다. D3D9.h 파일 앞에 코드에 다음 #define 포함하기만 하면 됩니다.
#define D3D_DEBUG_INFO
디버그 정보를 사용하려면 #define D3D9.h 파일 이전에 빌드되어야 합니다(DXUT를 사용하는 모든 프로그램은 디버그를 위해 프로그램을 컴파일할 때 D3D_DEBUG_INFO 자동으로 사용하도록 설정됨). SDK 샘플을 실행하는 경우 DXStdAfx.h(모든 C++ 샘플에 영향을 줍니다)에서 이를 볼 수 있습니다. 또한 디버그 Direct3D 런타임을 실행해야 합니다(필요한 경우 제어판 사용하도록 설정할 수 있습니다).
다음은 BasicHLSL 샘플을 사용하는 예제입니다.
- 줄 37 앞에 Dxstdafx.h 파일에 #define 추가합니다.
- 디버그 프로젝트를 빌드합니다.
- BasicHLSL.cpp의 줄 307에서 중단점 설정
- 디버거를 실행합니다.
다음 스크린샷은 watch 창에서 Direct3D 텍스처 개체에 대해 가져올 수 있는 자세한 정보의 종류를 보여 주세요.
참고
개체 속성 이름이 표시되고 디버그 런타임이 사용하도록 설정된 경우에만 값이 올바릅니다. 소매 런타임에 대해 실행하는 경우 값이 잘못되었습니다.
확장 디버그에 대한 호출 스택 사용
Direct3D 디버그를 사용하도록 설정하면 개체를 만들 때마다 호출 스택을 확인할 수도 있습니다. 이렇게 하면 애플리케이션이 매우 느려지지만 리소스 누수에 대한 검사 데 사용할 수 있습니다. 호출 스택을 작성하려면 다음 레지스트리 키를 1로 설정합니다.
\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Direct3D\\
D3D9Debugging\\EnableCreationStack
디버그를 사용하도록 설정하여 애플리케이션을 빌드하면 다음과 같은 추가 변수에 액세스할 수 있습니다.
LPCWSTR CreationCallStack;
이 변수는 개체를 만들 때마다 호출 스택을 저장합니다. 이렇게 하면 애플리케이션이 매우 느려지지만 리소스 누수 디버그에 사용할 수 있습니다.
관련 항목