2015-05-08 14 views
6

Programuję w języku C#, Visual Studio 2013 Update 5 RC i za pomocą Direct3D 11 (poprzez SlimDX) renderuję animowaną scenę. Eksperymentowałem z nieuporządkowanymi teksturami dostępu w module cieniującym pikseli i działa dobrze. Oznacza to, że mój moduł cieniujący pikseli ma RWTexture2D<float> związany z register(u1), który ustawiam wraz z widokiem celu renderowania. Po uruchomieniu aplikacji renderowanie działa poprawnie i nie dostaję żadnych ostrzeżeń ani błędów z warstwy debugowania D3D.Program Visual Studio Graphics Debugger pomija działający moduł cieniujący pikseli

Chociaż to wszystko działa, nie mogę analizować pojedynczych klatek za pomocą Debugera graficznego Visual Studio. (Właściwą) obrazu wyjściowego jest obecnie pewien odcień szarości, jak widać na poniższym rysunku:

Screenshot from the rendered output

Mimo że pomiary FPS działa dobrze, kiedy wychwytywania ramki, zawsze jest pokazany jako w pełni biały (lub inny kolor użyłem, aby usunąć cel render) w dzienniku VSG:

Captured frames

Kiedy otwieram Visual Studio graficzne Analyzer do jednej z ramek, widzę problem w przygotowaniu graficznym. Assembler wejście i vertex shader pracują zgodnie z przeznaczeniem, ale shaderów pikseli brakuje i „nie ma dostępnych oczek” w stopniu wyjściowym połączenia:

enter image description here

tabela obiekt wyraźnie stwierdza, że ​​shader pikseli (obj:7) jest ustawiony. Czy masz jakieś pomysły lub sugestie, dlaczego nie pojawiają się w potoku grafiki lub dlaczego przechwycone ramki są puste, mimo że działają w moim programie? Mogę wykluczyć, że odgrywa rolę z miejsca, w którym ładowany jest kod modułu cieniującego, tj. Czy używam Compile lub CompileFromFile. Jedną rzeczą, którą wciąż podejrzewam, ale nie mogę do tej pory zweryfikować, jest to, że nieuporządkowany dostęp do modułu cieniującego w pikselu myli Debugger grafiki Visual Studio. Jakieś wskazówki? Z góry dziękuję.

Edytuj: Nie jest to związane z the MSDN walkthrough on misconfigured pipelines, ponieważ analizator grafiki pokazuje, że moduł cieniujący pikseli jest ustawiony w kontekście urządzenia. Również stałe bufory są poprawnie ustawione w module cieniującym pikseli.

Odpowiedz

0

Czy używasz społeczności Visual Studio?

Ponieważ używam Community w domu i Professional w szkole i mam dokładnie ten sam problem z wersją Community, ale z Professional w szkole wszystko jest w porządku.

+0

Używam Visual Studio 2013 Ultimate. Myślę, że znalazłem przyczynę tego zachowania i faktycznie wydaje się, że jest to RWTexture (tj. Zasób z nieuporządkowanym dostępem). Po usunięciu go z kodu modułu cieniującego dane wyjściowe są wyświetlane zgodnie z oczekiwaniami. – hschmauder

1

Musisz wymusić użycie debugowania warp. Wykonaj poniższe czynności. 1. Otwórz właściwości DirectX przez debugowanie -> Grafika-> Panel sterowania DirectX. enter image description here

  1. Kliknij Edit List, wyszukiwarki vsgraphicsdesktopengine.exe i dodać go do listy.
  2. Wybierz opcję Wymuś dla warstwy debugowania i sprawdź opcję Wymuś WARP w oknie Właściwości DirectX, a następnie zastosuj ją. enter image description here
  3. Uruchomienie debugowania grafiki i przechwytywanie klatek i ponowne wyświetlanie potoku.

Mam nadzieję, że to pomoże!

poważaniem wizualna zespołu Studio graficzne

+0

To nie działa dla Visual Studio 2015 Update 3 (v14.0.25431.01). Dowolny pomysł? – Varaquilex