2010-09-21 14 views
5

No veo un RenderState como miembro en la clase GraphicsDevice, que es donde solían estar las funciones para deshabilitar el búfer de profundidad. ¿Alguien sabe cómo se hace esto con esta nueva API 4.0?Cómo deshabilitar el búfer de profundidad?

Sería grandioso si pudiera acceder de alguna manera a una clase similar a RenderState en alguna parte .. GraphicsDevice parece haber obtenido algo de eso, pero no casi todo!

Respuesta

2

Ah .. Establecería GraphicsDevice.DepthStencilState en una instancia de DepthStencilState con cualquier número de propiedades establecidas. Parece que el RenderState se dividió en muchos otros estados. Estuve buscando en las propiedades individuales dentro de GraphicsDevice antes, pero parecen estar mejor organizadas ahora para una administración estatal más sencilla.

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

Sí. Pero asegúrese de crear objetos de estado una vez (no en su método de dibujo). Lea Shawn para obtener más información http://blogs.msdn.com/b/shawnhar/archive/2010/04/02/state-objects-in-xna-game-studio-4-0.aspx. – Empyrean

+1

También tenga en cuenta que hay una serie de objetos de estado preconstruidos que cubren muchos escenarios comunes. En este caso, puede usar DepthStencilState.None para deshabilitar el almacenamiento en búfer de profundidad, y DepthStencilState.Default para habilitar la escritura (como en su ejemplo aquí). –

Cuestiones relacionadas