Udostępnij za pośrednictwem


Lista zdarzeń grafiki

Lista zdarzeń graficznych, która jest jednym z narzędzi Graphics Diagnostics w może ułatwic eksplorację zdarzeń Direct3D, które wystąpiły podczas konkretnej klatki w grze lub aplikacji, a ponadto przeanalizować ich efekty.Obejmuje to obsługę zdarzeń, takich jak tworzenie znaku lub obiektu.

Jest to Lista zdarzeń grafiki:

Lista zdarzeń, które mają w nazwie "Index".

Nawigacja po liście zdarzeń grafiki

Ponieważ tak wiele zdarzeń programu Direct3D może być generowanych przez tylko jedną klatkę w typowej grze lub aplikacji, okno Lista zdarzeń grafiki zawiera funkcje ułatwiające szybkie znajdowanie ważnych zdarzeń i informacji pokrewnych.

Aby zmniejszyć liczbę zdarzeń nieinteresujących na liście Lista zdarzeń grafiki, zdarzenia AddRef i Release są pomijane, a zdarzenia można filtrować według nazwy, albo pojedynczo — jak pokazano na poprzedniej ilustracji filtrowanej, aby wyświetlić zdarzenia, które mają Vertex w nazwie — lub za pomocą rozdzielanej średnikami listy słów kluczowych — na przykład "Draw;Primitive", aby wyświetlić zdarzenia, których nazwy zawierają słowa Draw lub Primitive.

[!UWAGA]

Lista filtrów jest wrażliwy na spacji — na przykład "narysować;Pierwotne"i"Rysowanie; Pierwotne"są różne.

Ponieważ wywołania Draw są szczególnie ważnymi zdarzeniami, okno Lista zdarzeń grafiki zawiera przyciski Przejdź do następnego wywołania rysowania i Przejdź do poprzedniego wywołania rysowania, które znajdują się w lewym górnym rogu okna, tak aby je znajdować i szybko przechodzić między nimi.

Hh873200.collapse_all(pl-pl,VS.110).gifKategorie zdarzeń

Zdarzenia, które są wyświetlane na liście zdarzeń graficznych są zorganizowane w czterech kategoriach; trzy reprezentujące poszczególne zdarzenia i czwarta, która jest używana do grupowania zdarzeń pokrewnych.Każde zdarzenie jest wyświetlane razem z ikoną wskazującą kategorię, do której należy zdarzenie.

Kategoria

Opis

Ikona Zdarzenie remis Rysuj zdarzeń

Znaki zdarzeń remis, który wystąpił w przechwyconej ramce.

Ikona Zdarzenie pre-frame Zdarzenie Pre-Frame

Oznacza zdarzenie, które wystąpiło przed przechwyconą klatką — na przykład utworzenie urządzenia lub obiektu.

Ikona znacznika zdarzenia zdefiniowanej przez użytkownika Znacznik zdarzeń zdefiniowanych przez użytkownika lub grupy

Znaki pojedynczego zdarzenia lub grupy powiązanych zdarzeniach, zgodnie z definicją aplikacji.Grup można rozwinąć w taki sposób, aby pokazać zdarzenia, które należą do nich.

Zdarzenia w ramce i pre-frame są wbudowane w Direct3D runtime i odpowiadają wywołaniom interfejsu API Direct3D.Nie trzeba wykonywać żadnych czynności, aby włączyć te zdarzenia.

Zdarzenia i grupy zdefiniowane przez użytkownika są specyficzne dla określonej aplikacji.Zdefiniowane przez użytkownika wydarzenia mogą być użyte w celu oznaczenia ważnych wydarzeń, które występują w aplikacji użytkownika, dzięki czemu można je skorelować do zdarzeń grafiki w Liście zdarzeń grafiki.Na przykład można użyć znacznika podczas rysowania określonego rodzaju obiektu, dzięki czemu łatwo można znaleźć jego wywołanie rysowania w oknie Lista zdarzeń grafiki.Zdefiniowane przez użytkownika grupy wydarzeń mogą być użyte w celu łączenia wydarzeń w grupy lub hierarchie, dzięki czemu łatwiej można przeglądać Listę zdarzeń grafiki.Na przykład można pogrupować zdarzenia, które są związane z renderowaniem interfejsu.

Aby w aplikacji utworzyć znaczniki zdarzenia zdefiniowanego przez użytkownika i grupy zdarzeń zdefiniowanych przez użytkownika, użyj tych samych interfejsów API, które są używane w Direct3D do oznaczenia zdarzeń i grup używanych w innych narzędziach Direct3D.W programie Direct3D 11.1 interfejsy API należą do interfejsu ID3DUserDefinedAnnotation; we wcześniejszych wersjach programu Direct3D użyj rodziny interfejsów API D3DPERF_.

Opis interfejsu API

API (Direct3D 11.1)

API (Direct3D w wersji 11.0 i starszych)

Rozpocznij grupę zdarzeń zdefiniowaną przez użytkownika

ID3DUserDefinedAnnotation::BeginEvent

D3DPerf_BeginEvent

Zakończ grupę zdarzeń zdefiniowaną przez użytkownika

ID3DUserDefinedAnnotation::EndEvent

D3DPerf_EndEvent

Utwórz znacznik zdarzeń użytkownika

ID3DUserDefinedAnnotation::SetMarker

D3DPerf_SetMarker

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

Aby zrozumieć zdarzenia grafiki, może być konieczne uzyskanie dodatkowych informacji dotyczących bieżącego stanu urządzenia lub obiektów Direct3D, do których odwołuje się zdarzenie.Lista zdarzeń graficznych zawiera łącza do takich informacji dotyczących każdego zdarzenia.

Używanie listy zdarzeń grafiki do znajdowania problemów z renderowaniem

Używając okna Lista zdarzeń grafiki oraz innych narzędzi diagnozowania grafiki, można przypisać problemy z renderowaniem do określonego zdarzenia programu Direct3D.Po zidentyfikowaniu zdarzenia, w którym po raz pierwszy pojawia się problem, można ustalić jego przyczynę za pomocą innych narzędzi diagnostycznych grafiki.

Dla problemów z renderowaniem, gdzie brakuje obiektu — oznacza to, że obiekt nie pojawia się tam gdzie go oczekujesz — można użyć okna Lista zdarzeń grafiki wraz z oknem Etapy potoku grafiki.Po wybraniu zdarzenia Draw lub Dispatch z listy zdarzeń, w oknie Etapy potoku grafiki wyświetlany jest wynik zdarzenia na każdym etapie potoku.Przechodząc kolejno przez te zdarzenia i oglądając etapy potoku, można wykryć, kiedy obiekt został wyrenderowany, nawet jeśli nie jest wyświetlany w obiekcie docelowym renderowania.

Aby lepiej zrozumieć problemy z renderowaniem w których obiekt jest renderowane nieprawidłowo — oznacza to, że obiekt istnieje, ale ma niepoprawny wygląd — można użyć Listę zdarzeń grafiki Aby przejrzeć zdarzenia, które są przechwytywane w dokumencie dziennika grafiki.Po wybraniu Draw lub Dispatch listy zdarzeń zdarzenie, Visual Studio wyświetla obiektu docelowego renderowania jako istniała po wystąpieniu zdarzenia.Krokowe wykonywanie tych zdarzeń i oglądania, jak obiektu docelowego renderowania zmienia się w oknie dokumentu dziennika grafiki, można zaobserwować efekt określone zdarzenia, a tym samym zrozumieć, jak obiektu docelowego renderowania końcowego został zbudowany przez wielu zdarzeń — czasami błąd generowania jest spowodowany przez jak różne zdarzenia interakcji w obiektu docelowego renderowania.

Zobacz też

Zadania

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