Estoy intentando usar deferred shadows y a parte de ya de por sí odiar bastante tener que meterme con este tipo de cosas (me va más la lógica que programar cosas gráficas en sí mismas) cuando no encuentro soluciones aún lo odio más, si cabe >:D
Si hago esto:
for (int i = 0; i < scene.Count; i++) scene[i].Draw(Camera.ViewMatrix, Camera.ProjectionMatrix, true, null, true);
(http://i16.photobucket.com/albums/b12/the_hans/1-7.jpg)
Pero si intento renderizar esa misma escena a un render target y luego dibujarla a vía spritebatch me sale todo blanquecino, como mezclado con el difuso. Y no tengo ni pajolera idea de qué está mal.
GraphicsDevice.SetRenderTarget(0, basicSceneTexture);
for (int i = 0; i < scene.Count; i++) scene[i].Draw(Camera.ViewMatrix, Camera.ProjectionMatrix, true, null, true);
GraphicsDevice.SetRenderTarget(0, null);
GraphicsDevice.Clear(Color.Black);
spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.SaveState);
spriteBatch.Draw(basicSceneTexture.GetTexture(), Vector2.Zero, Color.White);
spriteBatch.End();
(http://i16.photobucket.com/albums/b12/the_hans/2-7.jpg)
La idea era sacar un rendertarget con la escena básica, un render target con la escena con las deferred shadows y luego mezclarlas, a ver cómo quedaba la cosa. Pero tengo problemas hasta con la escena básica :-[
Parece como si se te hubiese quedado por ahi algun renderstate raro.
¿Que pasa si cambias el SpriteBlendMode.AlphaBlend a SpriteBlendMode.None?
He encontrado el problema, era a la hora de crear el rendertarget.
Cambiar
new RenderTarget2D(GraphicsDevice, width, height, 1, SurfaceFormat.Single, RenderTargetUsage.DiscardContents);
por
new RenderTarget2D(GraphicsDevice, width, height, 1, SurfaceFormat.Color, RenderTargetUsage.DiscardContents);
Single por color :P
Gracias de todas formas Blau ;)