Ejemplo n.º 1
0
        private void Render(Scene scene)
        {
            bool renderOverlay = DrawDirtyRects || DrawFps;
            bool composite     = false;

            if (_renderTarget == null)
            {
                _renderTarget = ((IRenderRoot)_root).CreateRenderTarget();
            }

            if (renderOverlay)
            {
                _dirtyRectsDisplay.Tick();
            }

            try
            {
                if (scene != null && scene.Size != Size.Empty)
                {
                    IDrawingContextImpl context = null;

                    if (scene.Generation != _lastSceneId)
                    {
                        context = _renderTarget.CreateDrawingContext(this);
                        _layers.Update(scene, context);

                        RenderToLayers(scene);

                        if (DebugFramesPath != null)
                        {
                            SaveDebugFrames(scene.Generation);
                        }

                        _lastSceneId = scene.Generation;

                        composite = true;
                    }

                    if (renderOverlay)
                    {
                        context = context ?? _renderTarget.CreateDrawingContext(this);
                        RenderOverlay(scene, context);
                        RenderComposite(scene, context);
                    }
                    else if (composite)
                    {
                        context = context ?? _renderTarget.CreateDrawingContext(this);
                        RenderComposite(scene, context);
                    }

                    context?.Dispose();
                }
            }
            catch (RenderTargetCorruptedException ex)
            {
                Logging.Logger.Information("Renderer", this, "Render target was corrupted. Exception: {0}", ex);
                _renderTarget?.Dispose();
                _renderTarget = null;
            }
        }
Ejemplo n.º 2
0
        private void Render(Scene scene)
        {
            bool renderOverlay = DrawDirtyRects || DrawFps;
            bool composite     = false;

            if (renderOverlay)
            {
                _dirtyRectsDisplay.Tick();
            }

            if (scene != null && scene.Size != Size.Empty)
            {
                if (scene.Generation != _lastSceneId)
                {
                    _layers.Update(scene);
                    RenderToLayers(scene);

                    if (DebugFramesPath != null)
                    {
                        SaveDebugFrames(scene.Generation);
                    }

                    _lastSceneId = scene.Generation;

                    composite = true;
                }

                if (renderOverlay)
                {
                    RenderOverlay(scene);
                    RenderComposite(scene);
                }
                else if (composite)
                {
                    RenderComposite(scene);
                }
            }
        }
Ejemplo n.º 3
0
        private void Render(Scene scene)
        {
            _dirtyRectsDisplay.Tick();

            if (scene.Size != Size.Empty)
            {
                if (scene.Generation != _lastSceneId)
                {
                    _layers.Update(scene);
                    RenderToLayers(scene);

                    if (DebugFramesPath != null)
                    {
                        SaveDebugFrames(scene.Generation);
                    }

                    _lastSceneId = scene.Generation;
                }

                RenderOverlay(scene);
                RenderComposite(scene);
            }
        }