public void Draw(ItemDrawer drawer, EffectDrawParameters[] parameters, Color defaultColor) { //m_renderTarget1 = m_finallyTarget; //m_device.SetRenderTarget( null); //m_device.SetRenderTarget(m_resloveTexture); var tgt = m_batch.GraphicsDevice.GetRenderTargets()[0].RenderTarget; m_batch.GraphicsDevice.SetRenderTarget( m_renderTarget1); m_batch.GraphicsDevice.Clear(defaultColor); m_batch.Begin( SpriteSortMode.Deferred, BlendState.AlphaBlend); drawer(m_batch); m_batch.End(); //return; RenderTarget2D temp; foreach( EffectDrawParameters effectDrawParameterse in parameters ) { DrawEffect(m_renderTarget1, m_renderTarget2, effectDrawParameterse); temp = m_renderTarget1; m_renderTarget1 = m_renderTarget2; m_renderTarget2 = temp; } m_batch.GraphicsDevice.SetRenderTarget(tgt); }
private void DrawEffect(RenderTarget2D source, RenderTarget2D target, EffectDrawParameters param) { Effect effect; if (!m_effects.TryGetValue(param.Effect, out effect)) { // effect = DataReader.Load<Effect>("Effect/" + param.Effect); m_effects.Add(param.Effect, effect); } m_batch.GraphicsDevice.SetRenderTarget(target); //m_batch.Begin(SpriteSortMode.Immediate, BlendState.Opaque); // effect.CurrentTechnique = effect.Techniques[param.Technique]; //effect.Begin(); //effect.CurrentTechnique.Passes[param.Pass].Begin(); //effect.CurrentTechnique.Passes[param.Pass].Apply(); //m_batch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, effect); m_batch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, null); m_batch.Draw(source, new Rectangle(0, 0, 800, 600), Color.White); m_batch.End(); //effect.CurrentTechnique.Passes[param.Pass].End(); //effect.End(); }
public void Draw(ItemDrawer drawer, EffectDrawParameters param, Color color) { Draw( drawer, new[] {param}, color ); }