/// <summary>
 /// Changes the size of the render.
 /// </summary>
 /// <param name="width">The width.</param>
 /// <param name="height">The height.</param>
 public override void ChangeRenderSize(int width, int height)
 {
     if (!dispatcher.CheckAccess())
     {
         dispatcher.Invoke(DispatcherPriority.Background, () => ChangeRenderSize(width, height));
     }
     else
     {
         if (0 >= width || 0 >= height)
         {
             return;
         }
         renderWidth  = width;
         renderHeight = height;
         var bitmap   = new WriteableBitmap(renderWidth, renderHeight, 96d, 96d, PixelFormats.Bgra32, null);
         var newSetup = new RenderSetup
         {
             Bitmap  = bitmap,
             Context = new RenderContext(bitmap.BackBuffer, renderWidth, renderHeight, bitmap.BackBufferStride),
             Dirty   = new Int32Rect(0, 0, width, height)
         };
         OnSourceCreated(bitmap);
         setup = newSetup;
     }
 }
 private void Unlock(RenderSetup currentSetup)
 {
     dispatcher.Invoke(DispatcherPriority.Normal, () =>
     {
         currentSetup.Bitmap.AddDirtyRect(currentSetup.Dirty);
         currentSetup.Bitmap.Unlock();
     });
 }
 private void Unlock(RenderSetup currentSetup)
 {
     dispatcher.Invoke(DispatcherPriority.Normal, () =>
                                                  {
                                                      currentSetup.Bitmap.AddDirtyRect(currentSetup.Dirty);
                                                      currentSetup.Bitmap.Unlock();
                                                  });
 }
示例#4
0
        public static void Blit(this RenderSetup renderSetup, DrawDevice device, BatchInfo source, Rect screenRect)
        {
            device.Target       = null;
            device.TargetSize   = screenRect.Size;
            device.ViewportRect = screenRect;

            device.PrepareForDrawcalls();
            device.AddFullscreenQuad(source, TargetResize.Stretch);
            device.Render();
        }
示例#5
0
        private bool RenderPickingMap()
        {
            if (this.pickingFrameLast == Time.FrameCount)
            {
                return(false);
            }
            if (this.ClientSize.IsEmpty)
            {
                return(false);
            }

            // Update culling info. Since we do not have a real game loop in edit
            // mode, we'll do this right before rendering rather than once per frame.
            if (Scene.Current.VisibilityStrategy != null)
            {
                Scene.Current.VisibilityStrategy.Update();
            }

            Point2      clientSize  = new Point2(this.ClientSize.Width, this.ClientSize.Height);
            RenderSetup renderSetup = this.CameraComponent.PickingSetup;

            if (renderSetup != null)
            {
                renderSetup.AddRendererFilter(this.PickingRendererFilter);
            }

            this.pickingFrameLast = Time.FrameCount;
            this.CameraComponent.RenderPickingMap(
                clientSize / 2,
                clientSize,
                true);

            if (renderSetup != null)
            {
                renderSetup.RemoveRendererFilter(this.PickingRendererFilter);
            }

            return(true);
        }
 private void Lock(RenderSetup currentSetup)
 {
     dispatcher.Invoke(DispatcherPriority.Normal, () => currentSetup.Bitmap.Lock());
 }
 private void Lock(RenderSetup currentSetup)
 {
     dispatcher.Invoke(DispatcherPriority.Normal, () => currentSetup.Bitmap.Lock());
 }
 /// <summary>
 /// Changes the size of the render.
 /// </summary>
 /// <param name="width">The width.</param>
 /// <param name="height">The height.</param>
 public override void ChangeRenderSize(int width, int height)
 {
     if (!dispatcher.CheckAccess())
         dispatcher.Invoke(DispatcherPriority.Background, () => ChangeRenderSize(width, height));
     else
     {
         if (0 >= width || 0 >= height) return;
         renderWidth = width;
         renderHeight = height;
         var bitmap = new WriteableBitmap(renderWidth, renderHeight, 96d, 96d, PixelFormats.Bgra32, null);
         var newSetup = new RenderSetup
                        {
                            Bitmap = bitmap,
                            Context = new RenderContext(bitmap.BackBuffer, renderWidth, renderHeight, bitmap.BackBufferStride),
                            Dirty = new Int32Rect(0, 0, width, height)
                        };
         OnSourceCreated(bitmap);
         setup = newSetup;
     }
 }