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:
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:
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:
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.
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