Grafikpipelinestufen
Das Fenster Grafikpipelinestufen, das eines der Grafikdiagnose-Tools in Visual Studio ist, hilft Ihnen zu verstehen, wie ein bestimmtes Zeichnen-Ereignis die Grafikpipeline durchläuft.
Dies ist das Fenster Grafikpipelinestufen:
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 das Fenster Grafikpipelinestufen und der Workflow sind gleich geblieben.Weitere Informationen über diese Änderung finden Sie unter Übersicht über die Grafikdiagnose.
Verstehen des Fensters Grafikpipelinestufen
Mithilfe des Fensters Grafikpipelinestufen können Sie die Ausgabe der einzelnen Phasen aus der Grafikpipeline analysieren, die auf ein bestimmtes, gerendertes Objekt angewendet wird. Sie können insbesondere die Phasen, in denen Daten falsch interpretiert oder falsch umgewandelt wurden, identifizieren – z. B. können Sie überprüfen, ob ein Vertex-Shader-Schritt verursacht, dass ein Objekt außerhalb des Bildschirms gezeichnet wird. Wenn Sie die Pipelinestufe identifiziert haben, in der das Problem auftritt, können Sie die anderen Grafikdiagnose-Tools dazu verwenden, um zu prüfen, wie die Daten interpretiert oder transformiert wurden. Rendering-Probleme, die in den Pipeline-Stufen angezeigt werden, beziehen sich häufig auf falsche Vertex-Format-Deskriptoren, fehlerbehaftete Shader-Programme oder falsch konfigurierte Gerätestatus.
Grafikpipelinestufen
Das Fenster Grafikpipelinestufen zeigt Grafikdaten nur für die Pipelinestufen, die während des Aufrufs von Zeichnen aktiv waren. Um grafische Tools in Visual Studio zur Überprüfung der Ausgabe der einzelnen, angezeigten Stufen zu überprüfen, wählen Sie die zugeordnete Miniaturansicht im Fenster Grafikpipelinestufen.
Compute-Shader werden nicht im Fenster Grafikpipelinestufen unterstützt.
Eingabe-Assembler
Liest Index- und Vertex-Daten, die von der Anwendung bereitgestellt werden, und assembliert sie für die Grafikhardware. Die Miniaturansicht zeigt ein Drahtmodell der montierten Scheitelpunkte. Die Vertexdaten, die der Position entsprechen, richten sich nach der POSITION-Semantik. Wenn die POSITION-Semantik nicht in der Eingabe-Assembler-Ausgabe vorhanden ist, dann wird in derEingabe-Assembler-Phase nichts angezeigt. Sie können mithilfe des Modell-Editors die Ausgabe der Eingabe-Assembler-Phase untersuchen.Vertex-Shader
Verarbeitet Scheitelpunkte, i. d. R. durch Ausführen von Vorgängen, z. B. Transformationen, Skinning und Beleuchtung. Ein Vertex-Shader übernimmt immer eine Vertex-Eingabe und eine Vertex-Ausgabe. Die Miniaturansicht zeigt ein Drahtmodell der transformierten Geometrie an. Die Vertexdaten, die der Position entsprechen, richten sich nach der POSITION oder SV_POSITION-Semantik. Wenn die POSITION oder SV_POSITION-Semantik nicht in der Vertex-Shader-Ausgabe vorhanden ist, dann wird die Vertex-Shader-Phase nichts angezeigt. Sie können mithilfe des Grafik-Editors die Ausgabe der Vertex-Shader-Phase untersuchen.Rumpf-Shader
Nur Direct3D 11. Verarbeitet geometrische Primitiven – z. B. Quads, Dreiecke oder Linien – in niederwertigen geometrischen Patches, die als Eingabe für die Mosaikphase einer festen Funktion dienen. Es wird keine Miniaturansicht für den Rumpf-Shader angezeigt.Domain-Shader
Nur Direct3D 11. Verarbeitet die Unterteilungs-Scheitelpunkte, die in der Mosaikphase einer festen Funktion ähnlich zum Vertex-Shader-Schritt ausgegeben werden. Es wird keine Miniaturansicht für den Domain-Shader angezeigt.Geometrie-Shader
Verarbeitet die gesamten Primitiven – Punkte, Linien oder Dreiecke – zusammen mit Informationen zur optionalen Vertex für angrenzende Primitive. Ein Geometrie-Shader kann einen oder mehrere neue Primitive ausgeben oder verwerfen. Die Miniaturansicht zeigt ein Drahtmodell der transformierten Geometrie an. Sie können mithilfe des Grafik-Editors die Ausgabe der Geometrie-Shader-Phase untersuchen.Pixel-Shader
Verarbeitet interpolierte Vertexdaten, um farbige Pixels zu generieren. Die Miniaturansicht zeigt ein Bild der Pixel-Shader-Ausgabe. Sie können mithilfe des Grafik-Editors die Ausgabe der Pixel-Shader-Phase untersuchen.Ausgabe-Fusion
Kombiniert verschiedene Arten von Shader-Ergebnissen – z. B. Pixel-Shader-Werte und Tiefeninformationen – zusammen mit den Inhalten des Renderingziels und des Tiefenpuffers und Schablonenpufferinformationen, um zu bestimmen, wie das Renderingziel betroffen ist. Die Miniaturansicht zeigt ein Bild des Inhalts des Rendering-Ziels an, nachdem verschiedene Ergebnisse zusammengeführt und die Inhalte für den Stencilpuffer berücksichtigt wurden. Sie können mithilfe des Grafik-Editors die Ausgabe der Ausgabe-Fusions-Phase untersuchen.
Anzeigen und Debuggen des Shader-Codes
Sie können den Code für einen Vertex-Shader, Schiffskörpers Shader, Domain-Shader, Geometrie-Shader oder Pixel-Shader anzeigen oder debuggen, indem Sie die Steuerungen unterhalb der Pipelinestufe verwenden, die dem Shader zugeordnet ist.
Um einen Shader-Quellcode anzuzeigen
- Wählen Sie unterhalb der Pipelinestufe, die dem Shader zugeordnet ist, den Sie anzeigen möchten, den Titel der Pipelinestufe – z. B. Vertex-Shader, um den Vertex Shader-Quellcode anzuzeigen.
Um einen Shader zu debuggen
- Wählen Sie unter die Shader-Stufe, die dem Shader zugeordnet ist, den Sie unter dem Titel der Pipelinestufe debuggen möchten Debuggen starten. Dieser Einstiegspunkt in den HLSL-Debugger debuggt nur den ersten Shader-Aufruf für die entsprechende Stufe, d. h. für den ersten Vertex, das erste Primitiv oder das erste Pixel, der bzw. das verarbeitet wird. Andere Aufrufe dieser Shader-Phasen können mithilfe des Grafikpixelverlaufs aufgerufen werden.
Link zum Grafikgerät
Um zu verstehen, warum ein Aufruf einer Zeichnung in einer bestimmten Weise mit der Grafikpipeline interagiert, benötigen Sie möglicherweise Informationen über den aktuellen Gerätestatus. Das Fenster Grafikpipelinestufen enthält einen Link zu diesen Informationen.
Siehe auch
Aufgaben
Exemplarische Vorgehensweise: Fehlende Objekte durch Vertexschattierung