Пример #1
0
        public void ColorPixels()
        {
            RenderStarting?.Invoke(this, EventArgs.Empty);
            Passes = 0;

            RenderStarted?.Invoke(this, EventArgs.Empty);

            while (true)
            {
                while (Passes < MaxPasses)
                {
                    ColorPass(Passes);
                    Thread.Sleep(5);
                    if (_shutdown)
                    {
                        break;
                    }
                    Passes += 1;
                }
                if (!_completionTriggered && Passes >= MaxPasses)
                {
                    _completionTriggered = true;
                    MaxPassesCompleted?.Invoke(this, EventArgs.Empty);
                }
                Thread.Sleep(5);
                if (_shutdown)
                {
                    break;
                }
            }
        }
        public void preFindVisibleObjects(SceneManager sceneManager, SceneManager.IlluminationRenderStage irs, Viewport viewport)
        {
            if (this.viewport == viewport)
            {
                if (RenderStarted != null)
                {
                    RenderStarted.Invoke(this, EventArgs.Empty);
                }

                resized();

                renderManager.update();
            }
        }
Пример #3
0
        public void Start()
        {
            logger.Debug("D3DImageRenderer::Start()");

            if (!(state == RendererState.Stopped || state == RendererState.Initialized))
            {
                throw new InvalidOperationException("Invalid renderer state " + State);
            }
            // OnPropertyChanged(nameof(ScreenView));
            renderTask = Task.Run(() =>
            {
                logger.Debug("Render thread started...");

                state = RendererState.Rendering;
                RenderStarted?.Invoke();

                //OnPropertyChanged(nameof(ScreenView));
                try
                {
                    while (State == RendererState.Rendering)
                    {
                        Draw();

                        waitEvent?.WaitOne(1000);
                    }
                }
                catch (Exception ex)
                {
                    logger.Error(ex);
                    errorCode = MediaToolkit.SharedTypes.ErrorCode.Fail;
                }
                finally
                {
                    state = RendererState.Stopped;
                    RenderStopped?.Invoke(null);

                    logger.Debug("Render thread stopped...)");
                }
            });

            // timer.Start();
        }