/// <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(); }); }
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(); }
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; } }