Przechwytywanie informacji graficznych
Problemy z renderowaniem w aplikacjach opartych na DirectX można diagnozować, przechwytując dane graficzne za pomocą narzędzi Visual Studio Graphics Diagnostics.
Można przechwytywać dane graficzne ręcznie lub programowo.Aby przechwytywać ręcznie, uruchom aplikację z Visual Studio i wybierz przycisk Przechwytywanie ramek przycisku.Aby przechwycić programowo, użyj przechwytywania API, które jest zawarte w Visual Studio, w kodzie źródłowym aplikacji, aby określić, kiedy ramki powinny być przechwytywane.
Można też zapobiegać przechwytywaniu informacji graficznych z aplikacji użytkownika.
Przechwytywanie informacji graficznych ręcznie
Przycisk Przechwytywanie ramek na pasku narzędzi programu Graphics Diagnostics umożliwia ręczne przechwytywanie ramek informacji graficznych z uruchomionych aplikacji Direct3D.Aby przechwytywać wiele ramek, wybierz przycisk wielokrotnie.Zanim będzie można przechwytywać klatki ręcznie, należy uruchomić aplikację z programu Visual Studio i włączyć program Graphics Diagnostics.
Visual Studio używa informacji przechwyconej do późniejszego odtworzenia przechwyconych ramek, dzięki czemu można je szczegółowo zbadać za pomocą narzędzi diagnostyki grafiki.
Aby uruchomić aplikację z włączonym programem Graphics Diagnostics
- Na pasku menu wybierz kolejno opcje Debuguj, Grafika i Rozpocznij diagnostykę.(Klawiatura: naciśnij klawisze Alt+F5)
Po sczepieniu programu Graphics Diagnostics z aplikacją możesz przechwycić informacje graficzne dla tylu klatek, ile chcesz.Przy każdym inicjowaniu przechwytywania zdarzenia programu Direct3D, które występują podczas następnej klatki, są rejestrowane, razem z obiektami interfejsu Direct3D i zasobami, które je wspierają.Zapisywanie rozpoczyna się natychmiast po przedstawieniu bieżącej klatki i kończy się po zaprezentowaniu klatki, którą chcesz uchwycić.
Aby przechwytywać ramki informacji graficznych
- Na pasku narzędzi programu Graphics Diagnostics wybierz przycisk Przechwyć ramkę.
(Klawiatura: z fokusem ustawionym na aplikacji naciśnij klawisz Print Screen)
Po przechwyceniu pierwszej klatki program Visual Studio tworzy dziennik grafiki do przechowywania informacji.Dodatkowo przechwycone klatki są dodawane do tego dziennika.Jeśli zamkniesz dokument dziennika grafiki (.vsglog) w programie Visual Studio podczas gdy aplikacja jest uruchomiona, nie można przechwytywać żadnych więcej klatek ani graficznych informacji, ale można kontynuować debugowanie jego wpisów przy użyciu debugera programu Visual Studio.Aby przechwycić więcej informacji graficznych, zatrzymaj debugowanie aplikacji, a następnie użyj polecenia Rozpocznij diagnostykę, aby ponownie uruchomić aplikację.
Przechwytywanie informacji graficznych programowo
Czasami poleganie na ręcznym przechwytywaniu lub gromadzeniu informacji o napotkanym problemie z renderowaniem jest niepraktyczne lub niemożliwe.Na przykład niektóre rodzaje problemów mogą być zbyt sporadyczne, aby odtworzyć je ręcznie, ale warunki programu, które je powodują, mogą być znane; lub może być konieczne zbieranie informacji graficznych w systemie, który nie obsługuje przechwytywania ręcznego, ponieważ nie obsługuje programu Visual Studio, jak w przypadku urządzeń z systemem Windows RT.Dla tych scenariuszy program Visual Studio zawiera interfejs API, który można wywołać programowo do przechwytywania informacji graficznych do dziennika.Po zakończeniu działania programu można otworzyć dziennik grafiki w programie Visual Studio w celu zbadania problemów, które zostały zarejestrowane.
Informacje dotyczące włączania programowego przechwytywania w aplikacji i konfigurowania komputera, który uruchomi aplikację w celu obsługi programowego przechwytywania — zobacz Instruktaż: Przechwytywanie informacji graficznych programowo.
Ochrona przed przechwytywaniem informacji graficznych
Przed opublikowaniem aplikacji możesz wyłączyć program Graphics Diagnostics i inne narzędzia profilowania, aby uniemożliwić użytkownikom wykrycie, jak aplikacja używa interfejsu API programu Direct3D.Informacja ta może być użyta nielegalnie.Aby uzyskać więcej informacji, zobacz Jak: wyłączanie Diagnostyka grafiki w aplikacji użytkownika.
Dokumenty dzienników grafiki
Dokumenty dzienników grafiki przechowują informacje o grafice zebrane podczas sesji przechwytywania w programie Graphics Diagnostics.Sesja przechwytywania może być inicjowana ręcznie lub programowo.Dzienniki grafiki zawierają jedną lub więcej klatek, które zostały przechwycone z działającej aplikacji grafiki programu DirectX.Dla każdej przechwyconej klatki jest rejestrowana lista wszystkich zdarzeń programu Direct3D, które wystąpiły podczas przechwytywania klatki.Obejmuje to obsługę zdarzeń Direct3D, które wystąpiły uprzednio — na przykład tworzenie znaków graficznych — i obsługę modułów cieniowania, modeli, tekstury i innych zasobów grafiki.Ponieważ każdy dziennik grafiki jest niezależny, te klatki można odtworzyć w dowolnym czasie, krok po kroku i bez zewnętrznej informacji lub odwołań.Można udostępniać dzienniki grafiki i badać problemy na komputerze innym niż używany do przechwytywania danych lub programowania kodu.Również można sprawdzać stare dzienniki grafiki, nawet jeśli podczas tworzenia aplikacji zmieniono modele i tekstury.Używając programu Graphics Diagnostics do diagnozowania problemów z grafiką, można badać każde wywołanie interfejsu Direct3D API i skojarzony z nim stan, poszczególne wierzchołki w buforach, a nawet to, jak wywołania rysowania wpływają na pojedyncze piksele.
[!UWAGA]
Mimo że dziennik grafiki przechwytuje większość istotnych informacji wewnętrznie, aby w pełni wykorzystać funkcje programu Graphics Diagnostics, są wymagane dodatkowe informacje.Na przykład aby w pełni wykorzystać funkcję stosu wywołań grafiki, musisz mieć również plik programu bazy danych (.pdb) i kod źródłowy aplikacji, a w celu debugowania kodu źródłowego cieniowania w języku HLSL również musisz mieć również kod źródłowy cieniowania (jeśli cieniowanie jest kompilowane przy użyciu kompilatora cieniowań D3D11.1 i informacje debugowania są włączona, kod źródłowy cieniowania zostanie osadzony w dzienniku grafiki podczas przechwytywania).
[!UWAGA]
Można wyodrębnić, modyfikować i zapisywać kopie siatek i tekstur z dziennika grafiki przy użyciu narzędzi graficznych, które są częścią programu Visual Studio.Te modyfikacje nie wpływają jednak na zawartość dziennika grafiki.Więcej informacji o tych narzędziach graficznych — zobacz Praca z aktywów 3-w dla gry i aplikacje.
Zobacz też
Zadania
Jak: wyłączanie Diagnostyka grafiki w aplikacji użytkownika
Instruktaż: Przechwytywanie informacji graficznych ręcznie
Instruktaż: Przechwytywanie informacji graficznych programowo