Ejemplo n.º 1
0
        public virtual void Render()
        {
            BeforeRender();

            //Background goes here.

            spriteBatch.GraphicsDevice.SetRenderTarget(layerRenderTarget);
            spriteBatch.GraphicsDevice.Clear(Color.CornflowerBlue);
            spriteBatch.Begin(SpriteSortMode.Deferred, BlendState, SamplerState, null, null, null, null);
            renderLayers.Render(spriteBatch);
            ParticleEngine.Render(spriteBatch);
            spriteBatch.End();

            Lighting.Render();

            spriteBatch.GraphicsDevice.SetRenderTarget(null);
            Resolution.SwitchToVirtualViewport();
            spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState, null, null, null, Resolution.ScaleMatrix);
            Lighting.Apply();
            spriteBatch.Draw(layerRenderTarget, Vector2.Zero, Color.White);
            spriteBatch.End();

            //Transitions go here.

            AfterRender();
        }
Ejemplo n.º 2
0
        public RenderTarget2D Render()
        {
            spriteBatch.SetRenderTargetAndClear(layerTarget, ClearColor);

            //Render all objects by layers back to front.
            spriteBatch.Begin();
            foreach (var layer in renderLayers.Values)
            {
                RenderLayer(layer);
            }
            spriteBatch.End();

            //Render Lights
            //I think the lighting should be baked into the renderer, so an Add light function.
            var lightTarget = lightRoom.Render();

            //Create the final render target from lighting and layers.
            spriteBatch.SetRenderTargetAndClear(finalTarget, ClearColor);
            spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.PointClamp, null, null, null, null);
            lightRoom.Apply();
            spriteBatch.Draw(layerTarget, Vector2.Zero, Color.White);
            spriteBatch.End();

            spriteBatch.SetRenderTarget(null);

            Clear();
            return(finalTarget);
        }