Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit dem Grafikpixelverlauf, einem der Grafikdiagnosetools in Visual Studio, können Sie erkennen, wie sich Direct3D-Ereignisse während eines bestimmten Frames Ihres Spiels oder Ihrer App auf ein bestimmtes Pixel auswirken.
So sieht das Fenster Grafikpixelverlauf aus:
![]()
Grundlegendes zum Pixelverlauf
Mit dem Grafikpixelverlauf können Sie analysieren, wie sich Direct3D-Ereignisse während eines bestimmten Frames auf ein bestimmtes Pixel des Renderziels auswirken.Sie können einen Renderingproblem für ein spezifisches Direct3D-Ereignis ermitteln, selbst wenn ein Nachfolgeereignis oder nachfolgende Primitive im selben Ereignis weiterhin den endgültigen Farbwert des Pixels ändern.Ein Pixel kann z. B. falsch gerendert sein und dann durch ein anderes halbtransparentes Pixel verdeckt werden, sodass die jeweiligen Farben im Framepuffer vermischt werden.Diese Art Problem wäre schwer zu diagnostizieren, wenn Sie nur die endgültigen Inhalte des Renderziels als Anhaltspunkt hätten.
Im Fenster Grafikpixelverlauf wird der vollständige Verlauf eines Pixels im Verlauf des ausgewählten Frames angezeigt.Im Bereich Endgültiger Frame-Puffer am oberen Rand des Fensters wird die Farbe angezeigt, die am Ende des Frames in den Framepuffer geschrieben wurde. Außerdem werden zusätzliche Informationen zum Pixel angezeigt, wie z. B. der Frame, aus dem es stammt, sowie die entsprechenden Bildschirmkoordinaten.Dieser Bereich enthält außerdem das Kontrollkästchen Alpha rendern.Wenn dieses Kontrollkästchen aktiviert ist, werden die Farbe für Endgültiger Frame-Puffer und die Farbwerte sowie die Transparenz in einem Schachbrettmuster angezeigt.Ist das Kontrollkästchen deaktiviert, wird der Alphakanal der Farbwerte ignoriert.
Am unteren Rand des Fensters werden die Ereignisse angezeigt, die sich auf die Pixelfarbe auswirken konnten, sowie die Pseudoereignisse Ursprünglich und Endgültig, die den ursprünglichen und den endgültigen Farbwert des Pixels im Framepuffer darstellen.Der ursprüngliche Wert wird durch das erste Ereignis bestimmt, das die Farbe des Pixels ändert (in der Regel ein Clear-Ereignis).Ein Pixel hat immer die folgenden Pseudoereignisse im Verlauf, falls keine anderen Ereignisse darauf Auswirkung hatten.Falls andere Ereignisse auf das Pixel Auswirkung haben, werden diese zwischen den Ereignissen Ursprünglich und Endgültig angezeigt.Diese Ereignisse können erweitert werden, um die darin enthaltenen Details anzuzeigen.Für einfache Ereignisse, die z. B. ein Renderziel löschen, besteht die Auswirkung des Ereignisses nur in einem Farbwert.Komplexere Ereignisse, wie z. B. Zeichnen-Aufrufe, erzeugen eine oder mehrere Primitive, die zur Farbe des Pixels beitragen können.
Primitive, die durch ein Ereignis gezeichnet wurden, sind durch den Primitivtyp und -index sowie die Gesamtzahl an Primitiven für das Objekt gekennzeichnet.Ein Bezeichner wie z. B. Dreieck (1456) von (6214) bedeutet, dass das Primitiv dem 1456. Dreieck in einem Objekt entspricht, das aus 6214 Dreiecken besteht.Links von jedem Primitivbezeichner steht ein Symbol, das die Auswirkung des jeweiligen Primitivs auf das Pixel zusammenfasst.Primitive, die Auswirkung auf die Pixelfarbe haben, werden durch ein abgerundetes Rechteck dargestellt, das mit der Ergebnisfarbe gefüllt ist.Primitive, die von einer Auswirkung auf die Pixelfarbe ausgeschlossen sind, werden durch Symbole dargestellt, die den Grund für den Ausschluss des Pixels anzeigen.Diese Symbole sind im Abschnitt Ausschluss von Primitiven weiter unten in diesem Artikel beschrieben.
Sie können alle Primitive erweitern, um zu überprüfen, wie die Pixel-Shader-Ausgabe mit der vorhandenen Pixelfarbe zusammengeführt wurde, um die Ergebnisfarbe zu erzeugen.Außerdem können Sie an dieser Stelle den Code des Pixel-Shaders, der dem Primitiv zugeordnet ist, überprüfen und debuggen, und Sie können den Vertex-Shaderknoten erweitern, um die Eingabe des Vertex-Shaders zu überprüfen.
Ausschluss von Primitiven
Wenn ein Primitiv von einer Auswirkung auf die Pixelfarbe ausgeschlossen wurde, kann dies unterschiedliche Gründe haben.Die einzelnen Gründe werden jeweils durch ein Symbol dargestellt, das in der folgenden Tabelle beschrieben ist:
Symbol |
Grund für den Ausschluss |
|---|---|
|
Das Pixel wurde ausgeschlossen, da es den Tiefentest nicht bestanden hat. |
|
Das Pixel wurde ausgeschlossen, da es den Scherentest nicht bestanden hat. |
|
Das Pixel wurde ausgeschlossen, da es den Schablonentest nicht bestanden hat. |
Aufrufs-Ausschluss Videofunktionen
Wenn alle Primitiven in einem Aufruf Videofunktionen aus dem auf das Renderingziels ausgeschlossen werden, da sie einen Test bei, dann kann der Aufruf Videofunktionen nicht erweitert werden und ein Symbol, das dem Grund für Ausschluss entspricht, wird daneben angezeigt.Die Gründe für BetragAufrufsausschluß ähneln den Gründen für primitiven Ausschluss, und ihre Symbole sind ähnlich.
Anzeige und Debuggen von Shader-Code
Sie können den Code für einen Vertex-Shader, einen Hull-Shader, einen Domain-Shader, einen Geometrie-Shader oder einen Pixel-Shader anzeigen oder debuggen, indem Sie die Steuerelemente unterhalb des Primitivs verwenden, das dem Shader zugeordnet ist.
So zeigen Sie den Quellcode eines Shaders an
- Wählen Sie unterhalb des Primitivs, das dem Shader zugeordnet ist, den Sie anzeigen möchten, den Titel des Shaders aus, z. B. Vertex-Shader, um den Quellcode für den Vertex-Shader anzuzeigen.
So debuggen Sie einen Shader
- Wählen Sie unterhalb des Primitivs, das dem Shader zugeordnet ist, den Sie debuggen möchten, neben dem Titel des Shaders Debuggen starten aus.
Links zu Grafikobjekten
Um die Grafikereignisse im Pixelverlauf zu verstehen, benötigen Sie eventuell Informationen zum Gerätezustand zum Zeitpunkt des Ereignisses oder zu den Direct3D-Objekten, auf die vom Ereignis verwiesen wird.Für jedes Ereignis im Pixelverlauf stellt der Grafikpixelverlauf Links zu dem jeweiligen Gerätezustand und zu verwandten Objekten bereit.
Siehe auch
Aufgaben
Exemplarische Vorgehensweise: Fehlende Objekte durch Gerätestatus