Foros - Stratos

Stratos => XNA => Mensaje iniciado por: combo_heroe en 13 de Abril de 2012, 07:05:22 PM

Título: Problema con Orden De dibujo
Publicado por: combo_heroe en 13 de Abril de 2012, 07:05:22 PM
Hola estaba realizando una prueba de un motor de fisica, la pruba consiste en poner un numero n de cubos apilados y dejar caer desde un punto mas alto cada cierto tiempo una Esfera, por lo que mi Orden de dibujo es primero dibujar la lista de cubos y despues la lista de bolas, el problema que vi es que algunas ocasiones al chocar las bolas se van detras de las cajas (desde la vista de la camara), pero por el orden de dibujo se siguen pintando

Como  pueso solucionar esto???. Muchas Gracias por sus respuestas
Título: Re: Problema con Orden De dibujo
Publicado por: WaaghMan en 14 de Abril de 2012, 02:05:18 PM
Si nada de lo que dibujas es transparente, lo más sencillo es asegurarse de que se está usando el ZBuffer para que las cosas de detrás no tapen a las de delante, aunque se pinten después.
Título: Re: Problema con Orden De dibujo
Publicado por: combo_heroe en 14 de Abril de 2012, 07:22:26 PM
Me podrian dar un ejemplo estoy trabajando con XNA 4.0 y en WP7 y de un vistazo en Google sobre ZBuffer en xna, ninguno de los ejemplo me sirve

Encontre uno http://stackoverflow.com/questions/3763475/disabling-depth-buffer-checks-in-xna-4-0-on-windows-phone-7 (http://stackoverflow.com/questions/3763475/disabling-depth-buffer-checks-in-xna-4-0-on-windows-phone-7)

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

            SharedGraphicsDeviceManager.Current.GraphicsDevice.DepthStencilState = depthState;


ya lo implemente al final del metodo Draw y funciona, pero despues de estar un rato corriendo, y al irele agregando modelos al dibujo llega un punto en que la pantalla se ponde morada y varios modelos desaparecen, despues intente poner este codigo en la inizializacion, pero ya no funciona

Que estoy haciendo  mal??

Título: Re: Problema con Orden De dibujo
Publicado por: WaaghMan en 15 de Abril de 2012, 07:56:46 PM
Probablemente te falte el Clear al principio del frame. Creo que era Device.Clear(), con una serie de parámetros.
Título: Re: Problema con Orden De dibujo
Publicado por: combo_heroe en 16 de Abril de 2012, 06:42:12 PM
pues tengo el
SharedGraphicsDeviceManager.Current.GraphicsDevice.Clear(Color.CornflowerBlue);
pero vi que hay otras sobrecargas, pero no estoy muy seguro de como usarlas ya que simpre he usado eso, no se si por eso me esta dando este comportamiento
Título: Re: Problema con Orden De dibujo
Publicado por: WaaghMan en 17 de Abril de 2012, 09:36:49 AM
No sé si esa sobrecarga te limpia el zbuffer, hay una en la que le dices qué cosas quieres limpiar.
Título: Re: Problema con Orden De dibujo
Publicado por: Vicente en 17 de Abril de 2012, 04:47:54 PM
Esta es la sobrecarga que dice WaaghMan:

http://msdn.microsoft.com/en-us/library/ff433734.aspx

Y con las ClearOptions le dices que quieres limpiar:

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.clearoptions.aspx
Título: Re: Problema con Orden De dibujo
Publicado por: combo_heroe en 21 de Abril de 2012, 11:51:00 PM
y que valores de le debo de dar aparte del ClearOptions es que la documentacion no me ayuda en mucho  Oo