2010-09-21 11 views
5

Ich sehe keine RenderState als Mitglied in der Klasse GraphicsDevice, wo die Funktionen zum Deaktivieren des Tiefenpuffers verwendet wurden. Wer weiß, wie das mit dieser neuen 4.0 API gemacht wird?Wie deaktiviere ich den Tiefenpuffer?

Es wäre toll, wenn ich irgendwie auf eine volle RenderState-ähnliche Klasse irgendwo zugreifen könnte. GraphicsDevice scheint etwas davon bekommen zu haben, aber nicht fast alle!

Antwort

2

Ah .. Ich würde GraphicsDevice.DepthStencilState auf eine Instanz von DepthStencilState mit einer beliebigen Anzahl von Eigenschaften festlegen. Scheint so, als wäre die RenderState in eine Reihe anderer Staaten zerbrochen. Ich suchte in den einzelnen Eigenschaften innerhalb von GraphicsDevice vorher, aber sie scheinen jetzt für leichteres Staatsmanagement besser organisiert zu sein.

depthState = new DepthStencilState(); 
depthState.DepthBufferEnable = true; /* Enable the depth buffer */ 
depthState.DepthBufferWriteEnable = true; /* When drawing to the screen, write to the depth buffer */ 

GraphicsDevice.DepthStencilState = depthState; 
+1

Ja. Stellen Sie jedoch sicher, dass Sie Statusobjekte einmal erstellen (nicht in Ihrer Zeichenmethode). Lesen Sie Shawn für Details http://blogs.msdn.com/b/shawnhar/archive/2010/04/02/state-objects-in-xna-game-studio-4-0.aspx. – Empyrean

+1

Bedenken Sie auch, dass es eine Reihe vordefinierter Statusobjekte gibt, die viele allgemeine Szenarien abdecken. In diesem Fall können Sie DepthStencilState.None verwenden, um die Tiefenpufferung zu deaktivieren, und DepthStencilState.Default, um das Schreiben zu aktivieren (wie in Ihrem Beispiel hier). –

Verwandte Themen