1) 준비 과정
1
2
3
4
5
6
7
8
9
|
#if defined(DEBUG) || defined(_DEBUG)
Microsoft::WRL::ComPtr<ID3D11Debug> dxgiDebug;
if (SUCCEEDED(GetDevice()->QueryInterface(IID_PPV_ARGS(&dxgiDebug))))
{
dxgiDebug->ReportLiveDeviceObjects(D3D11_RLDO_DETAIL);
dxgiDebug = nullptr;
}
#endif
|
cs |
이 코드를 사용한다. 디바이스를 해제하기 바로 전에 있어야 정확하게 알 수 있다.
전처리기로 Debug 모드인지 검사해야한다. Dubug 이외에 사용할 수 없기 때문.
ComPtr은 마이크로소프트의 스마트 포인터이다.
ID3D11Device의 QueryInterface를 통해 ID3D11Debug의 객체 생성한다.
생성한 ID3D11Debug를 통해 ReportLiveDeviceObjects 함수를 사용하여 정보를 호출한다.
(SUMARY : 간략한 정보, DETAIL : 자세한 정보)
2) 출력된 정보를 읽는 방법
출력된 정보의 Refcount의 수를 보면 알 수 있다. RefCount는 응용프로그램에서 해당 개체를 참조한 수이다. 이게 참조 되어있다면 어디선가 Release를 제대로 호출하지 않았다는 뜻이다. IntRef는 Device가 해당 객체를 참조한 수이다. 비정상적인 수가 아니면 ID3D11Debug가 참조한 수이니 웬만하면 걱정할 필요가 없다.
3) 참고 자료
http://seanmiddleditch.com/direct3d-11-debug-api-tricks/
'DirectX11' 카테고리의 다른 글
스키닝 애니메이션 (0) | 2021.11.02 |
---|---|
Space Division(공간 분할) (0) | 2021.07.27 |
3ds Max SDK Export(Object Animation) -2- (0) | 2019.10.31 |
3ds Max SDK Export(Object Animation) -1- (0) | 2019.10.31 |
2DLibrary 정리 1차 (0) | 2019.10.31 |