Erfassen von Grafikinformationen

Sie können Grafikinformationen aus Ihren DirectX-basierten Apps erfassen, um mit den Visual Studio-Grafikdiagnosetools Renderingprobleme zu diagnostizieren.

Erfassungsmethoden

In Windows 8.1 kann die DirectX 11.2 Runtime Grafikinformationen mithilfe von Debugging-Tools wie der Grafikdagnose intern erfassen – dies ist als stabile Erfassung bekannt. Bevor dieser Support zu Direct Runtime hinzugefügt wurde, wurden Grafikinformationen durch Abfangen bestimmter DirectX-Funktionsaufrufe zur Aufzeichnung von Argumenten und anderen Informationen vor der Weiterleitung der Aufrufe zum Abschluss an DirectX erfasst – dies wird Legacy-Erfassung genannt.

Da DirectX Runtime exklusiv für die Erfassung von Grafikinformationen in Windows 8.1 verantwortlich ist, muss die Legacy-Erfassung nicht aktualisiert werden, um DirectX 11.2 zu unterstützen. Deshalb ist die Legacy-Erfassung veraltet. Da allerdings DirectX 11.2 Runtime keine Versionen von Windows vor Windows 8.1 unterstützt, wird in Visual Studio 2013 weiterhin die Legacy-Erfassung für Apps unterstützt, die für Windows 8 und Windows 7 ausgelegt sind.

Mit beiden Methoden werden ähnliche Informationen aufgezeichnet, und es wird nicht geändert, wie Grafikinformationen erfasst werden oder die Grafikdiagnose-Tools verwendet werden.

Stabile Erfassung

Die stabile Erfassung unterstützt Visual Studio 2013-Grafikdiagnosen unter Windows 8.1, Windows RT 8.1 und Windows Phone 8.1. Es unterstützt DirectX 10.0 bis DirectX 11.2 und kann Grafikinformationen über neue Direct3D 11.2-Funktionen erfassen – z. B. unterteilte Ressourcen. Allerdings unterstützt es nicht vollständig alle Funktionen von Direct3D 11.2 – Sie können z. B. keinen HLSL-Shader debuggen, der mithilfe der HLSL Shader-Verknüpfungsfunktion erstellt wurde. Die stabile Erfassung verwendet eine neue Erfassungs-API zur Unterstützung ihrer programmierten Erfassungsszenarios.

Legacy-Erfassung

Die Legacy-Erfassung unterstützt Visual Studio 2013- und Visual Studio 2012-Grafikdiagnosen unter Windows 8, Windows RT 8 und Windows 7. Sie unterstützt DirectX 10.0 bis DirectX 11.1. Die Legacy-Erfassung unterstützt keine Funktionen von Direct3D 11.2 und ist mit Ausnahme von Szenarien, in denen keine stabile Erfassung zur Verfügung steht, veraltet. Die Legacy-Erfassung verwendet die in der Headerdatei vsgcapture.h definierte Erfassungs-API zur Unterstützung ihrer programmierten Erfassungsszenarios. Diese Art von programmgesteuerter Erfassung ist ebenfalls veraltet - außer für Szenarien, in denen keine stabile Erfassung zur Verfügung steht.

Aufzeichnen von Grafikinformationen

Das Aufzeichnen von Grafikinformationen ist ein zweistufiger Prozess. Führen Sie zuerst Ihre App unter der Grafikdiagnose aus, und geben Sie dann einen oder mehrere Frames an, aus denen ausführliche Informationen erfasst werden sollen.

So führen Sie die App unter der Grafikdiagnose aus

  • Klicken Sie in der Menüleiste auf Debuggen, dann auf Grafik und Diagnose starten. (Tastatur: Drücken Sie ALT+F5)

  • Klicken Sie in der Grafikdiagnose-Symbolleiste auf Diagnose starten.

Wenn eine App unter der Grafikdiagnose ausgeführt wird, werden laufend bestimmte Arten von Grafikinformationen aufgezeichnet, beispielsweise Geräteinstallation, Erstellung der Swapkette, Erstellung von Grafikobjekten und Ressourcen sowie andere wichtige Ereignisse, die Auswirkungen auf einen oder mehrere Frames haben. Gleichzeitig können Sie ausführliche Informationen über bestimmte Frames erfassen. Dazu gehören Zeichnen-Aufrufe und Compute-Shader-Dispatchvorgänge gemeinsam mit Direct3D-Objekten und -Ressourcen, die diese unterstützen.

So erfassen Sie einen Frame

  • Wählen Sie in Visual Studio in der Grafikdiagnose-Symbolleiste die Schaltfläche Frame erfassen ausSymbol "Schaltfläche Grafikerfassung“.

  • Auf der Tastatur drücken Sie die Taste DRUCK.

    Hinweis

    Während eine App unter Grafikdiagnose ausgeführt wird, kann die Taste DRUCK nur verwendet werden, um Frames von Grafikinformationen aufzuzeichnen – die übliche Tastenfunktion wird nicht ausgeführt.Dieses Verhalten bleibt bestehen, bis Sie die Aufzeichnung von Grafikinformationen beenden (üblicherweise durch Beenden des Debuggings oder das normale Verlassen der App), auch wenn der Fokus auf einer anderen Anwendung liegt.

  • In Visual Studio 2013 Update 3 wurde die Schnittstelle zum Aufzeichnen von Frames geändert. Wählen Sie in der Visual Studio-Aufnahmeschnittstellen die Schaltfläche Frame erfassen oberhalb der Zeitachse Diagnosesitzung oder wählen Sie die große Schaltfläche Frame erfassen unterhalb des Verantwortlichkeitsbereichs Frames pro Sekunde und rechts von zuvor erfassten Frames aus. Beide Schaltflächen werden in der folgenden Abbildung hervorgehoben.

    Sammeln von Frames mithilfe des GPU-Auslastungstools.

    Werden Sie bereit sind, die erfassten Frames zu überprüfen, starten Sie Visual Studio Grafik-Analyse über den Link Frame... oberhalb der Miniaturansichten oder durch Doppelklicken auf die Miniaturansicht.

Es können nur ganze Frames aufgezeichnet werden. Wenn Sie eine Aufzeichnung starten, werden daher die Grafikinformationen aus dem nächsten Frame aufgezeichnet. Die Aufzeichnung beginnt sofort nach Darstellung des Frames, in dem Sie die Aufzeichnung gestartet haben, und endet, wenn der aufgezeichnete Frame dargestellt wird. Während die App unter der Grafikdiagnose ausgeführt wird, können Sie so viele Frames aufzeichnen, wie Sie möchten. Wenn Sie keine Frames aufzeichnen, wird das Grafikprotokoll verworfen.

Wenn Sie zum ersten Mal Frames aufzeichnen, wird das Dokumentfenster des Grafikprotokolls (.vsglog) in Visual Studio angezeigt. Wenn Sie das Grafikprotokollfenster schließen, das Debugging beenden oder die App schließen, können Sie in diesem Protokoll keine Frames mehr erfassen. Wenn Sie weitere Grafikinformationen erfassen möchten, müssen Sie die App erneut unter der Grafikdiagnose ausführen, um ein neues Grafikprotokoll zu starten.

Erfassungsoptionen der Grafikdiagnose

Sie können die Aufzeichnung konfigurieren, um Aufruflisten für alle Grafikereignisse oder eine eingeschränkte Teilmenge zu sammeln, die HUD-Aufzeichnung zu deaktivieren und den Capture-Kompatibilitätsmodus zu deaktivieren oder zu aktivieren.

So konfigurieren Sie die Aufnahmeoptionen für die Grafikdiagnose

  1. Wählen Sie in der Menüleiste Extras, Optionen. Das Dialogfeld Optionen wird angezeigt.

  2. Wählen Sie Grafikdiagnose in der Kategorieliste auf der linken Seite aus, und konfigurieren Sie die gewünschten Optionen für die Grafikdiagnose.

    • Sammeln von Aufruflisten während der Aufzeichnung (verlangsamt die Aufzeichnung)
      Aktivieren Sie dieses Kontrollkästchen, um die Aufruflisten zu sammeln. Standardmäßig werden die Aufruflisten gesammelt und für Zeichnen, Versand, Vorhanden und Perf. Markierungen ausgewählt. Um die Aufruflisten für alle Ereignisse zu erfassen, wählen Sie für alles. Um Aufruflisten nicht zu erfassen, deaktivieren Sie das Kontrollkästchen Aufrufe während der Aufzeichnung erfassen (verlangsamt die Aufzeichnung).

    • In-Game-HUD während der Aufzeichnung deaktivieren
      Aktivieren Sie dieses Kontrollkästchen, um die HUD-Überlagerung zu deaktivieren, die eine Anwendung unter der Grafikdiagnose in der Regel anzeigt. Deaktivieren Sie das Kontrollkästchen Sie, um die HUD-Überlagerung anzuzeigen.

    • Erfassen im Kompatibilitätsmodus
      Aktivieren Sie dieses Kontrollkästchen, um Grafikinformationen im Kompatibilitätsmodus zu erfassen. Erfassen im Kompatibilitätsmodus ist die Standardeinstellung. Unter dem Kompatibilitätsmodus wird Direct3D nicht melden, dass die GPU zusätzliche Features unterstützt, die über die in der Basis-KE-Ebene definierten Features hinausgehen. Dadurch wird verhindert, dass die Anwendung bei Verwendung von Hardware-spezifischen Erweiterungen der GPU erfasst wird, und es wird sichergestellt, dass das Grafikprotokoll mit jeder GPU, die die gleiche oder eine höhere Funktionsebene unterstützt, wiedergegeben werden kann. Deaktivieren Sie dieses Kontrollkästchen, um den Kompatibilitätsmodus zu deaktivieren; Protokolle mit deaktiviertem Kompatibilitätsmodus werden nicht auf allen GPUs wiedergegeben, die nicht die gleichen zusätzlichen Funktionen unterstützen, die von der Anwendung während der Aufnahme verwendet wurden.

Grafikinformationen remote aufzeichnen

Grafikinformationen können von einer App aufgezeichnet werden, die auf dem lokalen Computer, einem Remotecomputer oder einem Remotegerät ausgeführt wird. Die Remoteerfassung wird auf Windows 8.1-Computern und Windows RT 8.1-Geräten unterstützt. Konfigurieren Sie Ihr Projekt für das Remotedebugging, wenn Sie Grafikinformationen von einer remote ausgeführten App aufzeichnen möchten, und führen Sie die App wie zuvor beschrieben unter der Grafikdiagnose aus. Die App wird auf dem Remotecomputer ausgeführt, und die erfassten Grafikinformationen werden auf dem Entwicklungscomputer aufgezeichnet.

Wie Sie Ihr Projekt für das Remotedebugging konfigurieren, hängt von der Art der App ab, die Sie entwickeln, und von der dabei verwendeten Programmiersprache. Informationen über das Konfigurieren des Remotedebuggings für eine Windows Store-App finden Sie unter Ausführen von Windows Store-Apps auf einem Remotecomputer in Visual Studio. Informationen über das Konfigurieren des Remotedebuggings für eine Windows Desktop-App finden Sie unter Einrichten des Remotedebuggens für ein Visual Studio-Projekt.

Sie können später einen Remotecomputer oder ein Remotegerät verwenden, um die Grafikinformationen unabhängig vom Gerät wiederzugeben, auf dem sie erfasst wurden. Weitere Informationen finden Sie unter Gewusst wie: Ändern des Grafikdiagnose-Wiedergabecomputers.

Das Aufzeichnen von Grafikinformationen von der Befehlszeile aus

Grafikinformationen können von einer Anwendung mit einem Befehlszeilentool erfasst werden. Dieses Tool DXCap.exe kann Grafikinformationen schnell erfassen und ohne Verwendung von Visual Studio oder programmgesteuerte Aufnahme wiedergeben. Insbesondere können Sie DXCap.exe für die Automatisierung oder in einer Testumgebung verwenden. Weitere Informationen zu DXCap.exe finden Sie unter Befehlszeilen-Erfassungs-Tool.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Erfassen von Grafikinformationen