Grafikereignisliste

Verwenden Sie die Grafikereignisliste in der Visual Studio-Grafikdiagnose, um die Direct3D-Ereignisse zu untersuchen, die während des Renderings eines Frames Ihres Spiels oder Ihrer App aufgezeichnet wurden.

Dies ist das Fenster Grafikereignisliste:

Eine Liste von Ereignissen mit "Index" im Namen.

Hinweis

Ab Visual Studio 2013 Update 3 werden die Grafikdiagnose-Toolfenster in einer unabhängigen Kopie der Visual Studio-Shell gehostet.Diese benutzerdefinierte Shell, genannt Grafik-Analyse, beseitigt unnötige Menüs und Optionen, aber die Grafikereignisliste und der Workflow sind gleich geblieben.Weitere Informationen über diese Änderung finden Sie unter Übersicht über die Grafikdiagnose.

Verwenden der Ereignisliste

Wenn Sie ein Ereignis in der Ereignisliste auswählen, wird dieses in den Informationen wiedergegeben, die von anderen Grafikdiagnose-Tools angezeigt werden. Wenn Sie die Ereignisliste in Verbindung mit diesen anderen Tools verwenden, können Sie ein eventuelles Rendering-Problem detailliert untersuchen, um seine Ursache zu ermitteln. Mehr Informationen über die Lösung von Rendering-Problemen durch Verwendung der Ereignisliste in Verbindung mit anderen Grafikdiagnose-Tools finden Sie unter Grafikdiagnosebeispiele.

Die Verwendung dieser Funktionen der Ereignisliste ist sehr wichtig für die Umgehung komplexer Frames, die Tausende von Ereignissen enthalten können. Wählen Sie die Ansicht, die für Ihre Arbeit am besten geeignet ist, um die Ereignisliste effektiv zu nutzen. Verwenden Sie die Suche, um die Ereignisliste zu filtern, folgen Sie Links, um mehr über die Direct3D-Objekte zu erfahren, die mit einem Ereignis verknüpft sind, und nutzen Sie die Pfeiltasten, um schnell zwischen den Zeichnen-Befehlen zu navigieren.

Ereignislistenansichten

Die Ereignisliste bietet zwei verschiedene Ansichten zur Organisation von Grafikereignissen in verschiedener Weise, um Ihren Workflow und Ihre Präferenzen zu unterstützen. Die erste Ansicht ist die Ansicht Zeichnen-Befehle, in der Ereignisse und ihre Status hierarchisch organisiert werden. Die zweite Ansicht ist die Ansicht Zeitachse, in der Ereignisse chronologisch in einer flachen Liste organisiert werden.

  • Die Ansicht Zeichnen-Befehle
    Zeigt erfasste Ereignisse und Ihren Status in der Hierarchie an. Die oberste Ebene der Hierarchie besteht aus Ereignissen wie Zeichnen-Befehlen, gelöschten und d vorhandenen Ereignissen und solchen, die mit Ansichten zu tun haben. In der Ereignisliste können Sie Zeichnen-Befehle erweitern, um den Gerätestatus zum Zeitpunkt des Zeichnen-Befehls anzuzeigen, und jede Art von Status noch weiter erweitern, um die Ereignisse zu zeigen, die deren Werte festlegen. Auf dieser Ebene können Sie auch feststellen, ob ein bestimmter Status in einem vorherigen Frame festgelegt wurde oder ob er seit dem letzten Zeichnen-Befehl mehr als einmal festgelegt wurde.

  • Die Ansicht Zeitachse
    Zeigt jedes erfasste Ereignis in chronologischer Reihenfolge an. Diese Art, die Ereignisliste zu organisieren, ist dieselbe wie in vorherigen Versionen von Visual Studio.

So ändern Sie den Ansichtsmodus der Ereignisliste

  • Suchen Sie im Fenster Grafikereignisliste über der Ereignisliste die Dropdownliste Ansicht, und wählen Sie entweder die Ansicht Zeitachse oder die Ansicht Zeichnen-Befehle.

Filtern von Ereignissen

Sie können mithilfe des Feldes "Suchen" in der oberen rechten Ecke des Fensters Grafikereignisliste die Ereignisliste so filtern, dass sie nur Ereignisse enthält, in deren Namen bestimmte Schlüsselwörter vorkommen. Sie können einzelne Schlüsselwörter wie Vertex – wie in der Abbildung oben gezeigt – oder mehrere Schlüsselwörter angeben, indem Sie eine durch Semikola getrennte Liste wie Zeichnen;Primitiv erstellen – wodurch Ereignisse gefunden werden, in deren Namen entweder Draw oder Primitive vorkommt. Suchen sind leerzeichenspezifisch -– VSSet und VS Set sind z. B. verschiedene Suchvorgänge –, also stellen Sie sicher, dass Ihre Suchen sorgfältig sind.

Da die Untersuchung von Draw-Befehlen sehr wichtig ist, können Sie die Schaltflächen Zum nächsten Zeichnen-Befehl wechseln und Zum vorherigen Zeichnen-Befehl wechseln in der oberen linke Ecke des Fensters Graphics Event List verwenden, um schnell nach einzelnen Zeichnen-Befehlen zu suchen und zwischen diesen zu navigieren.

Für das richtige Verständnis bestimmter Grafikereignisse können eventuell zusätzliche Informationen über den aktuellen Gerätestatus oder über Direct3D-Objekte erforderlich sein, auf die das Ereignis verweist. Viele Ereignisse enthalten Links zu diesen Informationen, denen Sie folgen können, um mehr Details zu erfahren.

Arten von Ereignissen und Ereignismarkern

Die Ereignisse, die in der Ereignisliste angezeigt werden, sind in vier Kategorien organisiert: allgemeine Ereignisse, Zeichnen-Ereignisse, benutzerdefinierte Ereignisgruppen und benutzerdefinierte Ereignismarker. Außer allgemeinen Ereignissen wird jedes Ereignis zusammen mit einem Symbol angezeigt, das angibt, zu welcher Kategorie es gehört.

Symbol

Ereignisbeschreibung

(kein Symbol)

Allgemeines Ereignis

Ein Ereignis, das kein benutzerdefiniertes Ereignis, keine benutzerdefinierte Ereignisgruppe und kein Zeichnen-Ereignis ist.

Symbol für Draw-Ereignis

Zeichnen-Ereignis

Markiert ein Zeichnen-Ereignis, das während des erfassten Frames aufgetreten ist.

Symbol "Benutzerdefinierten Ereignismarker"

Benutzerdefinierte Ereignisgruppe

Gruppiert verwandte Ereignisse auf von der App definierte Art.

Symbol "Benutzerdefinierten Ereignismarker"

Benutzerdefinierter Ereignismarker

Markiert einen bestimmten Speicherort auf von der App definierte Art.

Benutzerdefinierte Ereignisse

Benutzerdefinierte Ereignisse sind spezifisch für Ihre App. Sie können sie verwenden, um wichtige Ereignisse zuzuordnen, die in Ihrer App mit Ereignissen in der Grafikereignisliste auftreten. Sie können z. B. benutzerdefinierte Ereignisgruppen erstellen, um verwandte Ereignisse in Gruppen oder Hierarchien zu organisieren – z. B. diejenigen, die Ihre Benutzeroberfläche rendern –, sodass Sie die Ereignisliste leichter durchsuchen können, oder Sie können Marker erstellen, wenn eine bestimmte Art von Objekten gezeichnet wird, sodass Sie leicht die entsprechenden Grafikereignisse in der Ereignisliste finden können.

Zur Erstellung von Gruppen und Marken in Ihrer App verwenden Sie dieselben APIs, die Direct3D zur Verwendung mit anderen Direct3D-Debugging-Tools bereitstellt. In der Tabelle unten sind die APIs aufgeführt, die Sie verwenden können, um Gruppen und Marker in verschiedenen Versionen von Direct3D zu erstellen.

API-Beschreibung

ID3D11DeviceContext2 (Direct3D 11.2)

ID3DUserDefinedAnnotation (Direct3D 11,1)

Familie D3DPerf_ API (Direct3D 11.0 und früher)

Start einer Ereignisgruppe

BeginEventInt

BeginEvent

D3DPerf_BeginEvent

Ende einer Ereignisgruppe

EndEventInt

EndEvent

D3DPerf_EndEvent

Erstellen eines Ereignismarkers

SetMarkerInt

SetMarker

D3DPerf_SetMarker

Sie können jede dieser APIs verwenden, die Ihre Version von Direct3D unterstützt – wenn Sie z. B. wenn Sie die API Direct3D 11.1 verwenden möchten, können Sie entweder SetMarker oder D3DPerf_SetMarker verwenden, um einen Ereignismarker zu erstellen, aber nicht SetMarkerInt, da es nur in Direct3D 11.2 enthalten ist. Sie können auch APIs, die verschiedene Versionen von Direct3D verwenden, zusammen in derselben App kombinieren.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Fehlende Objekte durch Gerätestatus