Grafikereignisliste

Die Grafikereignisliste, eines der Grafikdiagnose-Tools in Visual Studio, kann Ihnen helfen, die Direct3D-Ereignisse, die in einem bestimmten Frame des Spiels oder der App aufgetreten sind, zu untersuchen und deren Effekte zu analysieren.Dies schließt die Unterstützung von Ereignissen wie Geräte- oder Objekterstellung ein.

Dies ist die Grafikereignisliste:

Eine Liste von Ereignissen mit "Index" im Namen.

Da in einem typischen Spiel oder einer App durch nur einen Frame sehr viele Direct3D-Ereignisse generiert werden können, enthält die Grafikereignisliste Funktionen, die Ihnen helfen, wichtige Ereignisse und die zugehörigen Informationen schnell zu suchen.

Um die Anzahl von uninteressanten Ereignissen in der Grafikereignisliste zu reduzieren, werden AddRef- und Release-Ereignisse ausgelassen. Sie können Ereignisse nach Namen filtern, entweder eines zur Zeit, wie in der vorherigen Abbildung gezeigt, in der nach Ereignissen gefiltert wird, deren Namen Vertex enthalten, oder durch die Verwendung einer durch Semikolons getrennten Schlüsselwortliste, z. B. "Draw; Primitive", um Ereignisse anzuzeigen, die entweder Draw oder Primitive in ihren Namen haben.

HinweisHinweis

Die Filterliste ist Leerzeichen-für beispielsweise, "abgehobener umbrochenen vertraulich; Primitive" und "abgehobener umbrochenen; Primitive" sind unterschiedlich.

Da Draw-Aufrufe besonders wichtige Ereignisse sind, enthält die Grafikereignisliste in der linken oberen Ecke des Fensters die Schaltflächen Zum nächsten Zeichnen-Befehl wechseln und Zum vorhergehenden Zeichnen-Befehl wechseln, sodass Sie schnell zwischen Draw-Ereignissen wechseln können.

Hh873200.collapse_all(de-de,VS.110).gifEreigniskategorien

Die in der Grafikereignisliste angezeigten Ereignisse sind in vier Kategorien unterteilt, drei für einzelne Ereignisse und ein vierte, in der zusammengehörende Ereignisse gruppiert sind.Jedes Ereignis wird zusammen mit einem Symbol angezeigt, das die Kategorie angibt, zur der das Ereignis gehört.

Kategorie

Beschreibung

Symbol für Draw-Ereignis Ereignis Videofunktionen

Markiert ein Ereignis Videofunktionen, das während der aufgezeichneten Frames aufgetreten ist.

Symbol "Pre-Frame-Ereignis" Pre-Frame-Ereignis

Markiert ein Ereignis, das vor dem aufgezeichneten Frame eingetreten ist, beispielsweise eine Geräte- oder Objekterstellung.

Symbol "Benutzerdefinierten Ereignismarker" Benutzerdefinierter Ereignismarker oder Verweisen

Markiert ein einzelnes Ereignis oder eine Gruppe in Verbindung verwandten Ereignisse, wie durch die Anwendung definiert.Gruppen können erweitert werden, um die Ereignisse zu zeigen, dass sie enthalten.

Die In-Frame- und Pre-Frame-Ereignisse werden in der Direct3D-Laufzeit erstellt und entsprechen Direct3D-API-Aufrufen.Sie müssen keine Aktionen ausführen, um diese Ereignisse zu aktivieren.

Benutzerdefinierte Ereignisse und Gruppen sind App-spezifisch.Sie können benutzerdefinierte Ereignisse verwenden, um bedeutende Ereignisse zu markieren, die in der App auftreten, und damit diese Ereignisse mit den Grafikereignissen in der Grafikereignisliste in Beziehung setzen.Beispielsweise können Sie eine Markierung verwenden, wenn eine bestimmte Objektart gezeichnet wird, und damit leicht den Draw-Aufruf in der Grafikereignisliste finden.Sie können benutzerdefinierte Ereignisgruppen verwenden, um zusammengehörende Ereignisse in Gruppen oder in Hierarchien zu organisieren, um die Grafikereignisliste einfacher durchsuchen zu können.Beispielsweise können Sie Ereignisse, die mit dem Rendern der Schnittstelle zu tun haben, in Gruppen zusammenfassen.

Zum Erstellen benutzerdefinierter Ereignismarker und benutzerdefinierter Ereignisgruppen in der App verwenden Sie die gleichen APIs, die Direct3D benutzt, um Ereignisse und Gruppen für die Verwendung in anderen Direct3D-Tools zu markieren.In Direct3D 11.1 gehören die APIs zur ID3DUserDefinedAnnotation-Schnittstelle; für frühere Versionen von Direct3D verwenden Sie die API-Familie D3DPERF_.

API-Beschreibung

API (Direct3D 11.1)

API (Direct3D 11.0 und früher)

Beginnen einer benutzerdefinierten Ereignisgruppe

ID3DUserDefinedAnnotation::BeginEvent

D3DPerf_BeginEvent

Beenden einer benutzerdefinierte Ereignisgruppe

ID3DUserDefinedAnnotation::EndEvent

D3DPerf_EndEvent

Erstellen eines benutzerdefinierten Ereignismarkers

ID3DUserDefinedAnnotation::SetMarker

D3DPerf_SetMarker

Um Grafikereignisse zu verstehen, benötigen Sie möglicherweise weitere Informationen über den aktuellen Gerätezustand oder die Direct3D-Objekte, auf die im Ereignis verwiesen wird.Die Grafikereignisliste enthält für jedes Ereignis Links auf diese Informationen.

Verwenden der Grafikereignisliste zum Suchen nach Renderproblemen

Mithilfe der Grafikereignisliste zusammen mit anderen Grafikdiagnose-Tools können Sie Renderprobleme für ein bestimmtes Direct3D-Ereignis lokalisieren.Wenn Sie das Ereignis identifiziert haben, in dem das Problem zuerst auftrat, können Sie andere Grafikdiagnose-Tools verwenden, um die Ursache des Problems festzustellen.

Für Renderprobleme, in denen ein Objekt fehlt (das Objekt erscheint nicht dort, wo Sie es erwarten) können Sie die Grafikereignisliste zusammen mit dem Fenster Grafikpipelinestufen verwenden.Wenn Sie ein Draw- oder Dispatch-Ereignis in der Ereignisliste auswählen, zeigt das Fenster Grafikpipelinestufen die Auswirkungen des Ereignisses auf jeder Stufe der Pipeline.Wenn Sie diese Ereignisse durchlaufen und dabei die Pipelinestufen überwachen, können Sie erkennen, wenn das Objekt gerendert wird, selbst wenn es nicht auf dem Renderingziel sichtbar ist.

Um Renderingprobleme besser zu verstehen in denen ein Objekt gerendert wird falsch-dass ist, ist das Objekt vorhanden, hat jedoch ein falsches Darstellung-Sie kann Grafikereignisliste verwenden um die Ereignisse zu überprüfen die im Grafikprotokolldokument aufgezeichnet werden.Wenn Sie eine Liste Draw oder Dispatch-Ereignisses im Ereignishandler auswählen, werden Visual Studio das Renderingziel an, wie es vorhanden war, als das Ereignis aufgetreten ist.Mithilfe von dieser Ereignisse treten und beobachten, wie das Renderingziel im Grafikprotokolldokumentfenster ändert, können Sie die Auswirkungen von bestimmten Ereignissen und beobachten, wie das endgültige Renderingziel von vielen Ereignisse-manchmal, einen Renderingaufgebaut wurde Fehler dadurch zu verstehen ist aufgrund, wie verschiedene Ereignisse im Renderingziel interagieren.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Fehlende Objekte durch Gerätestatus