DirectX Graphics debugowania
Visual Studio zawiera narzędzia diagnostyczne, które mogą ułatwić rozwiązywanie problemów renderowania w grach i aplikacjach opartych na interfejsie DirectX.
Debugowanie grafiki DirectX w programie Visual Studio
Debugowanie problemów z renderowaniem w grze lub aplikacji zwykle nie sprowadza się tylko do uruchomienia debugera i przechodzenia przez kod krok po kroku.Diagnozowanie problemów renderowania grafiki przedstawia kilka unikatowych wyzwań.Na przykład w dowolnej klatce setki tysięcy — jeśli nie miliony — pikseli są generowane jako dane wyjściowe, a jeszcze kilka razy więcej może być generowanych, ale nigdy nie są widoczne — z nich wszystkich prawdopodobnie tylko kilka pikseli będzie wykazywać problem, który próbujesz zdiagnozować.Ponadto może być kilka gigabajtów danych dla każdej wyrenderowanej ramki i aby jeszcze bardziej skomplikować sprawy, wszystkie te dane są przetwarzane na dedykowanym sprzęcie dzielącym pracę między setki lub tysiące wyspecjalizowanych jednostek przetwarzania, które są poza bezpośrednią obserwacją procesora CPU.Debugery tradycyjne nie są zaprojektowane do rozwiązywania tego rodzaju wyzwań.
Narzędzia Graphics Diagnostics w ułatwiają lokalizację źródła problemów z renderowaniem, rozpoczynając od artefaktów wizualizacji, które wskazują na problem, przez śledzenie wstecz pokrewnego kodu cieniowania, potoku grafiki, wywołań rysunku, stanu zasobów i urządzeń, a skończywszy na kodzie źródłowym własnej aplikacji.
Oto niektóre rodzaje problemów z renderowaniem, z którymi może pomóc program Visual Studio.
Stan urządzenia
Poprawna konfiguracja urządzenia graficznego jest ważna, ponieważ określa oczekiwania, które muszą spełnić dane modelu i tekstury w całej aplikacji.Na przykład jeśli stan urządzenia określa kolejność wierzchołków zgodnie z ruchem wskazówek zegara, każdy model, który określa kierunek wierzchołków w lewo, nie będzie renderowany poprawnie; lub jeśli funkcja testu głębi została ustawiona na większe-niż, obiekty, które są dalej, będą rysowane na obiektach, które są bliżej.Problemy z stanem urządzenia mogą być trudne do zdiagnozowania, ponieważ źródło problemu w kodzie źródłowym jest często daleko odsunięte od obiektów dotkniętych wadami.
Program Graphics Diagnostics może pomóc zbadać dane i stany urządzenia dla wadliwych pikseli, dzięki czemu można zawęzić strefę wyszukiwania problemów ze stanem urządzenia.
Błędu Modułu cieniującego
Pomyłki w kodzie aplikacji są prawie nieuniknione, niezależnie od tego, czy kod jest w języku C++ czy High Level Shader Language (HLSL).Jednakże debugowanie kodu języka HLSL tradycyjnie było trudniejsze, ponieważ nie mogło korzystać z zaawansowanych funkcji debugowania, z których korzysta C++ i inne języki.
Program Graphics Diagnostics może ułatwić znajdowanie i naprawianie błędów cieniowania, ponieważ umożliwia debugowania kodu języka HLSL.Korzystając z informacji, które są przechwytywane w dzienniku grafiki, debuger języka HLSL może „odtwarzać” zdarzenia rysowania na poziomie cieniowania, umożliwiając przechodzenie przez kolejne etapy wykonywania, ustawianie punktów przerwania i badanie zawartości zmiennych tymczasowych, parametrów i buforów stałych.Aby ułatwić skoncentrowanie się na właściwym temacie, program Graphics Diagnostics podaje punkty wejścia do debugera HLSL ze zdarzeń rysowania (poprzez okno Etapy potoku grafiki) i z poszczególnych pikseli (poprzez okno Historia pikseli grafiki).
Niezainicjowane lub nieprawidłowe parametry i stałe
Aplikacje graficzne używają parametrów i buforów stałych do skutecznego dostarczania informacji do potoku grafiki, tak aby różne obiekty mogły być przekształcane lub renderowane inaczej przez niestandardowy kod cieniowania.Gdy bufor stałej lub parametr nie został zainicjowany, lub gdy nie zawiera on zamierzonego wartość, odpowiedni obiekt staje się nieprawidłowo lub być może w ogóle.Problemy z buforu stałej lub parametr może być trudne do zdiagnozowania, ponieważ nie zawsze jest jasne, czy błąd jest spowodowany przez problem z buforu stałej lub parametr lub błąd w kodzie modułu cieniującego, a jeśli to błąd modułu cieniującego, odpowiadają którym programów do cieniowania.
Program Graphics Diagnostics może pomóc w identyfikacji cieniowań, które odpowiadają błędowi, i używać debugera języka HLSL do inspekcji kodu cieniowania, dzięki czemu można zawęzić strefę wyszukiwania problemów z parametrami i buforem stałych.Jeśli zadowalające jest, że kod modułu cieniującego jest poprawny, można użyć debugera HLSL do określenia parametrów podejrzanych lub stałych. Użyj Stosu wywołań zdarzeń grafiki, aby nawigować do renderowania obiektu, którego dotyczy kod aplikacji, a następnie znajdź, gdzie ostatnio ustawiony był parametr lub bufor stałych.
Zgodność wersji programu DirectX
Program Graphics Diagnostics obsługuje aplikacje, które używają programów Direct3D 10, Direct3D 10.1, Direct3D 11 i Direct3D 11.1, i zapewnia ograniczoną obsługę aplikacji, które używają programu Direct2D.Nie obsługuje aplikacji, które używają starszych wersji programu Direct3D, DirectDraw lub innych graficznych interfejsów API.
Ograniczona obsługa programu Direct2D
Ponieważ interfejs API programu Direct2D używa interfejsu API programu Direct3D do znacznej części swojej funkcjonalności, można używać programu Graphics Diagnostics do debugowania aplikacji, które używają programu Direct2D.Jednak ponieważ program Graphics Diagnostics sczepia się z bazowymi zdarzeniami programu Direct3D, a nie bardziej ogólnymi zdarzeniami interfejsu Direct2D, nie przechwytuje szczegółów zdarzeń programu Direct2D, które nie używają programu Direct3D.Również ponieważ relacje między wywołaniami interfejsu API programu Direct2D i powstającymi wywołania interfejsu API programu Direct3D nie zawsze są wyraźne, wykorzystanie programu Graphics Diagnostics dla aplikacji Direct2D nie jest proste.Nadal można korzystać z diagnostyki grafiki, aby uzyskać informacje dotyczące problemów renderowania niskiego poziomu w aplikacjach, które korzystają z Direct2D.
Wymagania systemu operacyjnego i zestawu SDK
System Windows 8 instaluje składniki Runtime Components wymagane przez funkcje debugowania grafiki opisane w tym dokumencie.Aby użyć tych funkcji w systemach Windows 7 i Windows Vista, należy zainstalować jeden z następujących zestawów SDK:
Zestaw SDK programu DirectX (czerwiec 2010)
Windows SDK (w wersji 7.1)
Tematy pokrewne
Tytuł |
Opis |
---|---|
Opisuje, jak używać programu Graphics Diagnostics do diagnozowania i debugowania problemów z renderowaniem w aplikacjach opartych na programie DirectX. |
|
Zawiera łącza do artykułów, które przedstawiają sposoby użycia Diagnostyka grafiki do przechwytywania informacji graficznych i diagnozowania typowych problemów z renderowaniem. |
|
Wprowadzono funkcję debugowania w programie Visual Studio. |
|
Zawiera łącza do artykułów, które omówienia technologii graficznych DirectX. |