티스토리 뷰
DirectX12 프로그래밍을 하다 보면 디버깅이 필요한 시점이 있습니다.
Visual Studio로 디버깅을 해서 중단점이 잡히면 그나마 다행이지만, 화면이 그냥 까맣게 나오는 경우도 있습니다.
의심되는 코드를 수정해보거나 의심되는 데이터를 따로 뽑아서 출력해봄으로써 확인해 볼 수도 있습니다.
하지만 이렇게 파악한 데이터는 한정적이고, 문제가 생길 때마다 테스트 코드를 작성하면 매우 많은 시간이 소요될 것입니다.
대신 Microsoft에서 제공하는 디버깅 툴인 PIX를 활용하면 그래픽 관련 디버깅을 매우 간편하고 빠르게 할 수 있습니다.
툴은 이곳에서 다운 받을 수 있습니다.
https://devblogs.microsoft.com/pix/download/
다음으로는 PIX를 통해 DirectX12 프로그램을 디버깅하는 과정을 간략하게 살펴보겠습니다.
처음 PIX를 설치해서 실행하면 아래와 같은 화면이 나옵니다.

로컬 컴퓨터에 있는 프로그램을 디버깅할 예정이므로 Connect to a Device를 클릭합니다.

Localhost를 선택하고 Connect 버튼을 클릭합니다.

Launch Win32 버튼을 누른 뒤, Browse 버튼을 눌러서 디버깅하고자 하는 프로그램을 선택합니다.
그후 아래쪽에 Launch 버튼을 누르면 프로그램이 실행됩니다.

프로그램이 실행되고 나면 아래 쪽에 Capture 버튼이 활성화됩니다.
Capture 버튼을 누르고 캡쳐된 이미지를 클릭하면 아래와 같은 분석 화면으로 넘어갑니다.
여기서 화면 상단의 Start Analysis 버튼을 누르면 분석을 시작할 수 있습니다.


다만, 처음으로 PIX 프로그램을 사용하면 위와 같은 에러를 맞닥뜨릴 수 있습니다.
시스템에서 개발자 모드를 켜지 않았을 때 발생하는 에러로 개발자 설정에서 개발자 모드를 켜주면 해결이 됩니다.

다시 PIX로 돌아와서 Start Analysis 버튼을 누르면 이번에는 아래와 같은 에러 메세지를 보게 됩니다.

NVIDIA 개발자 모드 설정이 되지 않아서 발생하는 에러로 링크에 설명된 대로 NVIDIA 제어판에서 개발자 모드를 켜주면 해결이 됩니다.

모든 설정이 끝마치고 나면 PIX를 한 번 껐다 켜주어야 합니다.
그 후 똑같은 과정을 통해서 Start Analysis 버튼을 누르면 이번에는 잘 진행되는 것을 확인할 수 있습니다.

캡쳐된 이미지에서 Pipeline을 누르고, 특정 DrawCall을 선택하면 해당 DrawCall을 진행할 때 어떤 State인지를 확인할 수 있습니다. RootSignature, Descriptor들, VertexBuffer, IndexBuffer, Render Targets, Depth/Stencil Info 등 많은 정보를 한 눈에 확인할 수 있습니다.
이를 통해 해당 데이터가 의도한 상황이랑 같은지, 어떤 부분에서 문제가 생겼는지 매우 쉽고 확실하게 확인할 수 있습니다.
지금까지 PIX를 사용하는 방법을 간단하게 알아보았습니다.
'프로그래밍 > DirectX12' 카테고리의 다른 글
| DirectX12를 활용한 Deferred Shading (0) | 2025.07.22 |
|---|---|
| DirectX12를 활용한 Bloom 효과 (0) | 2025.03.30 |
| DirectX12를 활용한 Instanced Drawing (0) | 2025.03.03 |
| DirectX12에서의 CPU & GPU 동기화 (1) | 2025.01.26 |
| DirectX12를 활용한 PostProcessing (0) | 2024.12.28 |
- Total
- Today
- Yesterday
- Mesh
- Unity
- opengl
- 수학
- Unreal
- 참조 형식
- 유니티
- RL
- DirectX12
- 값 형식
- RubiksCube
- VTK
- 중복 순열
- 중복 조합
- normalized device coordinate
- 조합
- collision detection
- Scriptable Render Pipeline
- 순열
- 최적화
- CollisionDetection
- 루빅스큐브
- C#
- perspective projection
- MeshProcessing
- value type
- Mesh Processing
- 통계학
- 경우의 수
- AABB
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |