2017-02-24 1 views
0

저는 학교 프로젝트 인 내 응용 프로그램에 정말 귀찮은 문제가 있습니다. 지연 렌더링을 사용하고 있는데 light의 pov에서 새 g 버퍼 텍스처로 위치를 추가하려고하고 light 버퍼에서 쉐이더 리소스로 깊이 버퍼 텍스처를 추가하려고합니다. 모든 g 버퍼 텍스처를 똑같은 방법으로 처리합니다.DirectX 11에서 Texture2D를 Pixel Shader 리소스로 더 추가하는 데 어려움이 있습니다

제 문제는 이러한 새로운 셰이더 리소스를 GPU에서 찾을 수 없다는 것입니다. RenderDoc을 사용하여 응용 프로그램을 디버깅하고 있습니다.이 새로운 리소스에 모두 쓰여지고있는 것을 볼 수 있습니다. 셰이더 리소스를 바인딩하는 호출도 좋게 보이지만 여전히 4 개의 리소스 만 있습니다. 내가 전에 가지고 있었던 가벼운 통행.

내 코드는 절대 엉망이며 그 중 많은 부분 (!)이 있습니다. 그래서 저를 도울 수있는 구체적인 것을보고 싶다면 게시 할 수 있습니다.

이런 종류의 문제를 디버깅하는 방법에 대해 몇 가지 팁을 얻으면 정말 행복 할 것입니다. 누군가 문제가 무엇인지 아는 것이 더 행복 할지라도 말입니다.

미리 감사드립니다.

답변

0

다이렉트 X 응용 프로그램을 디버깅 할 두 가지 중요한 첫 단계가 있습니다

  • 이 있는지 확인은 당신이 런타임에를 점검합니다 HRESULT을 반환 모든 기능. 반환을 무시하는 것이 안전하다면 void을 반환합니다. HRESULT을 검사 할 때는 == S_OK을 사용하지 말고 FAILED 또는 SUCCEEDED 매크로를 대신 사용하십시오. '빠른 실패'오류에 대한 좋은 옵션은 ThrowIfFailed을 통해 C++ 예외 처리를 사용하는 것입니다.

  • DirectX 디버그 장치를 활성화하고 디버그 출력 창에서 오류, 경고 및 기타 메시지를 찾습니다. 사용 설정에 대한 자세한 내용은 Anatomy of Direct3D 11 Create DeviceDirect3D SDK Debug Layer Tricks을 참조하십시오.

이 방법으로 문제를 해결할 수는 없지만 추적하는 데 많은 시간을 소모하는 어리석은 실수는 피할 수 있습니다. 당신의 DirectX 개발에 새로운 경우

는, 다이렉트 X 11 개 애플리케이션을 디버깅을 위해 DirectX Tool Kit tutorials

에서 살펴보고, 비주얼 스튜디오 그래픽 진단 VS 2012 년 기능 이상 좋은 옵션입니다. VS 2013 또는 VS 2015 Community edition을 사용하기위한 라이센스 요구 사항에 적합하며 VSGS를 포함한 모든 기능을 포함합니다. MSDN을 참조하십시오.

+0

답변 해 주셔서 감사합니다. 이미 HRESULT를 설명하는 동안 거의 모든 곳에서 사용하고 있습니다. 그러나 SDK Debug Layer 항목을 살펴 보겠습니다. 조금 전에 시도했지만, 그냥 그것을 실행하고 실행하는 많은 일처럼 보였지만이 시점에서 나는 모든 것을 기꺼이합니다. 나는 비주얼 스튜디오 그래픽 디버깅을 사용하여 시도했다. (나는 그것이 당신이 의미하는 것이라 생각한다.) 그러나 나는 거기에서 유용한 정보를 추출하는 방법에 대해 확신하지 못한다. 나는 그것을 올바르게 사용하는 방법에 대해 읽을 것이다! 다시 한번 감사드립니다. – Waterbanana

관련 문제