다음을 통해 공유


Direct3D 디버그 정보 사용(Direct3D 9)

디버그하는 동안 Direct3D 개체에 대한 자세한 정보를 찾으려고 합니까? 예를 들어, 다음 스크린샷은 조사 창에서 Direct3D 인터페이스를 볼 때 일반적으로 표시되는 것을 보여 줍니다.

watch 창의 direct3d 인터페이스 스크린샷

개체의 모든 속성을 포함하는 미러 개체를 조사식 창에서 볼 수 있도록 코어 디버그 개체를 사용할 수 있습니다. D3D9.h 파일 앞에 코드에 다음 #define 포함하기만 하면 됩니다.

#define D3D_DEBUG_INFO

디버그 정보를 사용하려면 #define D3D9.h 파일 이전에 빌드되어야 합니다(DXUT를 사용하는 모든 프로그램은 디버그를 위해 프로그램을 컴파일할 때 D3D_DEBUG_INFO 자동으로 사용하도록 설정됨). SDK 샘플을 실행하는 경우 DXStdAfx.h에서 이를 확인할 수 있습니다(모든 C++ 샘플에 영향을 줍니다). 또한 디버그 Direct3D 런타임을 실행해야 합니다(필요한 경우 제어판에서 사용하도록 설정할 수 있습니다).

다음은 BasicHLSL 샘플사용하는 예제입니다.

  1. 줄 37 앞에 Dxstdafx.h 파일에 #define 추가합니다.
  2. 디버그 프로젝트를 빌드합니다.
  3. BasicHLSL.cpp 줄 307에서 중단점 설정
  4. 디버거를 실행합니다.

다음 스크린샷은 감시 창에서 Direct3D 텍스처 개체에 대해 얻을 수 있는 자세한 정보를 보여 줍니다.

direct3d 텍스처 개체의 스크린샷 조사식 창

메모

개체 속성 이름이 표시되고 디버그 런타임을 사용하는 경우에만 값이 올바릅니다. 소매 런타임에 대해 실행하는 경우 값이 잘못되었습니다.

 

확장 디버그에 호출 스택 사용

Direct3D 디버그를 사용하도록 설정하면 개체를 만들 때마다 호출 스택을 볼 수도 있습니다. 이렇게 하면 애플리케이션이 매우 느려지지만 리소스 누출을 확인하는 데 사용할 수 있습니다. 호출 스택을 작성하려면 다음 레지스트리 키를 1로 설정합니다.

\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Direct3D\\
D3D9Debugging\\EnableCreationStack

디버그를 사용하도록 설정된 애플리케이션을 빌드하면 다음과 같은 추가 변수에 액세스할 수 있습니다.

  LPCWSTR CreationCallStack;

이 변수는 개체를 만들 때마다 호출 스택을 저장합니다. 이렇게 하면 애플리케이션이 매우 느려지지만 리소스 누수 디버그에 사용할 수 있습니다.

프로그래밍 팁