Udostępnij za pośrednictwem


Historia pikseli grafiki

Okno Historia pikseli grafiki, które jest jednym z narzędzi Graphics Diagnostics w programie Visual Studio może ułatwić łatwo dowiedzieć się, jak określony piksel zmieniał się pod wpływem zdarzeń Direct3D w konkretnej klatce gry lub aplikacji.

Jest to okno Historia pikseli grafiki:

Piksel o trzy zdarzenia Direct3D w jej historii.

Opis historii pikseli

Za pomocą okna Historia pikseli grafiki można analizować, jak na określony piksel obiektu docelowego renderowania wpływają zdarzenia programu Direct3D podczas konkretnej klatki.Można wskazać, że problem renderowania dotyczy określonego zdarzenia Direct3D, nawet jeżeli późniejsze zdarzenia — lub kolejne elementy podstawowe tego samego zdarzenia — nadal zmieniają końcową wartość koloru piksela.Na przykład piksel może niepoprawnie renderowany i następnie zasłonięty przez inny, półprzezroczysty piksel, tak że ich kolory są zmieszane razem w buforze ramek.Problem tego rodzaju byłby trudny do zdiagnozowania, jeśli użytkownik jako wskazówkę miałby do dyspozycji jedynie zawartość obiektu docelowego renderowania.

W oknie Historia pikseli grafiki znajduje się pełna historia piksela na trasie wybranej ramki.Pole Bufor końcowej ramki u góry okna zawiera kolor, który jest zapisywany do bufora ramek na końcu ramki, a także dodatkowe informacje o pikselu, takie jak ramka przychodząca i jego współrzędne na ekranie.Ten obszar zawiera również pole wyboru Renderowanie alfa.Gdy to pole wyboru jest zaznaczone, wartości koloru Bufor końcowej ramki i kolorów pośrednich są wyświetlane z przezroczystością na wzór szachownicy.Jeśli pole wyboru jest wyczyszczone, kanał alfa wartości kolorów jest ignorowany.

W dolnej części okna znajdują się zdarzenia, które mogły wpłynąć na zmianę koloru piksela, a także początkowe i końcowe pseudo-zdarzenia, które reprezentują wartości początkowe i końcowye kolorów pikseli w buforze ramek.Wartość początkowy kolor jest określana przez pierwsze zdarzenie, który zmienił kolor piksela (zazwyczaj Clear zdarzeń).Piksel ma zawsze te dwa pseudozdarzenia w swojej historii, nawet wtedy, gdy żadne inne zdarzenia nie dotyczy go.Gdy inne zdarzenia miały szansę wpływania na piksel, są wyświetlane między początkowym i końcowym zdarzeniem.Zdarzenia można rozwinąć w taki sposób, aby wyświetlić ich szczegóły.Dla prostych zdarzeń, takich jak te, które czyszczą obiekt docelowy renderowania, wynikiem zdarzenia jest wartość koloru.Bardziej złożone zdarzenia, takie jak wywołania rysowania, generują jeden lub więcej elementów podstawowych, które mogą przyczynić się do koloru piksela.

Dane pierwotne,, które zostały wyciągnięte przez zdarzenie są identyfikowane przez ich typ pierwotny i indeks oraz całkowitą liczbę danych pierwotnych dla obiektu.Na przykład identyfikator taki jak Trójkąt (1456) z (6214) oznacza, że element podstawowy odpowiada 1456. trójkątowi w obiekcie, który składa się z 6214 trójkątów.Z lewej strony każdego identyfikatora pierwotnego jest ikona podsumowująca oddziaływanie pierwotnego na piksel.Typy danych pierwotnych, które wpływają na kolor pikseli, są reprezentowane przez zaokrąglony prostokąt, wypełniony kolorem ostatecznym.Typy danych pierwotnych, które nie mają wpływu na kolor pikseli, są reprezentowane przez ikony, wskazujące przyczyny, dla których piksel został wyłączony.Ikony te są opisane w sekcji Wyłączenie pierwotnych w dalszej części tego artykułu.

Każdy element podstawowy można rozwinąć, aby zbadać, jak dane wyjściowe modułu do cieniowania pikseli zostały połączone z istniejącym kolorem pikseli w celu utworzenia koloru wynikowego.Z tego miejsca można również zbadać lub debugować cieniowanie pikseli skojarzone z elementem podstawowym i dalej rozwinąć węzeł cieniowania wierzchołków w celu zbadania danych wejściowych cieniowania wierzchołków.

Hh873193.collapse_all(pl-pl,VS.110).gifWyłączenie pierwotnych

Jeśli element podstawowy jest wyłączony z wpływania na kolor piksela, wyłączenie może wystąpić w różnych powodów.Każdy powód jest reprezentowany przez ikonę opisaną w tej tabeli:

Ikona

Przyczyna wyłączenia

Ikona Błąd testu głębokość.

Piksel został wykluczony, ponieważ test głębokości zakończył się niepowodzeniem.

Ikona Błąd testu dwubiegowa.

Piksel został wykluczony, ponieważ test nożyczek zakończył się niepowodzeniem.

Ikona Błąd testu wzornika.

Piksel został wykluczony, ponieważ test wzornika zakończył się niepowodzeniem.

Hh873193.collapse_all(pl-pl,VS.110).gifRysuj wywołania wykluczenia

Jeśli wymusza prymitywów do rysowania są wyłączone z wpływających na obiektu docelowego renderowania, ponieważ one nie test, wywołanie draw nie mogą być rozwijane i wyświetlana jest ikona, który odpowiada przyczyn wyłączenia obok niego.Powody wyłączenia wywołanie draw przypominają powody wyłączenia pierwotnych, a ich ikony są podobne.

Hh873193.collapse_all(pl-pl,VS.110).gifWyświetlanie i debugowania kodu modułu cieniującego

Można wyświetlić kod Modułu cieniującego wierzchołki, Modułu cieniującego kadłuby, Modułu cieniującego domeny, Modułu cieniującego geometrię, lub Modułu cieniującego piksele, lub zdebugować go, używając elementów poniżej etapu potoku, skojarzonego z modułem cieniującym.

Aby wyświetlić kod źródłowy modułu cieniującego

  • Poniżej elementu podstawowego skojarzonego z cieniowaniem, które chcesz wyświetlić, wybierz tytuł cieniowania — na przykład wybierz Cieniowanie wierzchołków, aby wyświetlić kod źródłowy cieniowania wierzchołków.

Aby debugować moduł cieniujący

  • Poniżej elementu podstawowego skojarzonego z cieniowaniem, które chcesz debugować, na prawo od tytułu cieniowania, wybierz opcję Rozpocznij debugowanie.

Hh873193.collapse_all(pl-pl,VS.110).gifŁącza do obiektów graficznych

Aby zrozumieć zdarzenia grafiki w historii pikseli, może być konieczne uzyskanie informacji dotyczących stanu urządzenia w czasie zdarzenia lub obiektów Direct3D, do których odwołuje się zdarzenie.Dla każdego zdarzenia w historii pikseli okno Historia pikseli grafiki zawiera łącza do aktualnego stanu urządzenia i do powiązanych obiektów.

Zobacz też

Zadania

Instruktaż: Brakujące obiekty ze względu na stan urządzenia

Instruktaż: Debugowanie renderowania błędów spowodowanych cieniowanie