2015-05-08 23 views
6

Ich bin Programmierung in C#, Visual Studio 2013 Update 5 RC und mit Direct3D 11 (via SlimDX) eine animierte Szene zu machen. Ich experimentierte mit ungeordneten Zugriffstexturen im Pixelshader und es funktioniert gut. Das heißt, mein Pixelshader hat eine RWTexture2D<float> gebunden an register(u1), die ich zusammen mit der Renderzielansicht einstelle. Wenn ich meine Anwendung ausführe, funktioniert das Rendering gut und ich bekomme keine Warnungen oder Fehler von der D3D Debug-Ebene.Visual Studio Graphics Debugger auslässt Arbeitspixelshader

Obwohl dies alles funktioniert, kann ich nicht scheinen, einzelne Frames mit den Visual Studio Graphics Debugger zu analysieren. Die (richtige) Ausgabebild wird derzeit einige Grauton, wie im folgenden Bild zu sehen:

Screenshot from the rendered output

Obwohl die FPS Messungen funktionieren, wenn ich einen Rahmen erfassen, ist es immer so vollständig gezeigt weiß (oder was auch immer Farbe, die ich das Renderziel löschen verwendet) im VSG-Log:

Captured frames

Wenn ich die Visual Studio Graphics Analyzer öffne für einen des Rahmen, sehe ich ein Problem in der Pipeline Grafiken. Der Eingang Assembler und Vertex-Shader arbeiten wie vorgesehen, aber die Pixel-Shader fehlen und es gäbe „kein Gitter vorhanden“ in der Ausgabe Fusion Stufe:

enter image description here

Die Objekttabelle eindeutig fest, dass die Pixel-Shader (obj:7) ist eingestellt. Hast du irgendwelche Ideen oder Vorschläge, warum es nicht in der Grafikpipeline erscheint oder warum die aufgenommenen Bilder leer sind, obwohl sie in meinem Programm funktionieren? Ich kann ausschließen, dass es eine Rolle spielt, von wo der Shader-Code geladen wird, d. H. Ob ich Compile oder CompileFromFile verwende. Eine Sache, die ich immer noch vermute, aber bisher nicht überprüfen konnte, ist, dass die ungeordnete Zugriffsressource im Pixel-Shader den Visual Studio Graphics Debugger verwirrt. Irgendwelche Hinweise? Vielen Dank im Voraus.

Bearbeiten: Dies bezieht sich nicht auf the MSDN walkthrough on misconfigured pipelines, da der Graphics Analyzer zeigt, dass der Pixelshader im Gerätekontext eingestellt ist. Außerdem werden konstante Puffer im Pixel-Shader korrekt eingestellt.

Antwort

0

Verwenden Sie Visual Studio Community?

Weil ich bin mit der Gemeinschaft zu Hause und Professional in der Schule und ich habe genau die gleiche Problem mit der Community-Version, aber mit der Professional in der Schule ist alles in Ordnung.

+0

Ich benutze Visual Studio 2013 Ultimative. Ich denke, ich habe den Grund für das Verhalten gefunden, und es scheint tatsächlich die RWTexture zu sein (d. H. Die Ressource mit ungeordnetem Zugriff). Wenn ich es aus dem Shader-Code entferne, wird die Ausgabe genau wie erwartet angezeigt. – hschmauder

1

Sie müssen erzwingen, verwenden Sie Warp-Debugging. Bitte folgen Sie den nachstehenden Schritten. 1. Öffnen Sie DirectX-Eigenschaften über Debug -> Graphics -> DirectX Control Panel. enter image description here

  1. Klicken Sie auf Liste bearbeiten, suchen vsgraphicsdesktopengine.exe und fügen Sie ihn in der Liste.
  2. Wählen Sie die Option Erzwingen für die Debug-Ebene und aktivieren Sie die Option WARP erzwingen in den DirectX-Eigenschaften, und wenden Sie sie an. enter image description here
  3. Führen Sie die Grafik-Debugging und Capture-Frames und die Pipeline wieder anzuzeigen.

Hope this Sie können helfen!

Mit freundlichen Grüßen, Visual Studio Graphics-Team

+0

Dies funktioniert nicht für Visual Studio 2015 Update 3 (v14.0.25431.01). Irgendeine Idee? – Varaquilex

Verwandte Themen