Пример #1
0
        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);
        }
Пример #2
0
 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();
 }
Пример #3
0
 public void Draw(ItemDrawer drawer, EffectDrawParameters param, Color color)
 {
     Draw( drawer, new[] {param}, color );
 }