private void OnUnloaded(object sender, RoutedEventArgs e) { if (_graphicsDeviceService != null) { RemoveBackBufferReference(); CompositionTarget.Rendering -= OnCompositionTargetRendering; _graphicsDeviceService.DeviceResetting -= OnGraphicsDeviceServiceDeviceResetting; _graphicsDeviceService = null; DeviceService.EndD3D(); } }
/// <summary> /// Unload the DrawingSurface's content. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void DrawingSurface_Unloaded(Object sender, System.Windows.RoutedEventArgs e) { if (IsInDesignMode) return; if (this.graphicsDeviceService != null) { // Remove back buffer references by disposing it this.DisposeBackBuffer(); CompositionTarget.Rendering -= this.RenderSurface; // Remove events from graphics device service this.graphicsDeviceService.DeviceResetting -= this.GraphicsDeviceService_DeviceResetting; this.graphicsDeviceService = null; DeviceService.EndD3D(); } }
private void OnLoaded(object sender, RoutedEventArgs e) { if (_graphicsDeviceService == null) { DeviceService.StartD3D(Window.GetWindow(this)); // We use a render target, so the back buffer dimensions don't matter. _graphicsDeviceService = GraphicsDeviceService.AddRef(1, 1); _graphicsDeviceService.DeviceResetting += OnGraphicsDeviceServiceDeviceResetting; // Invoke the LoadContent event RaiseLoadContent(new GraphicsDeviceEventArgs(_graphicsDeviceService.GraphicsDevice)); EnsureRenderTarget(); CompositionTarget.Rendering += OnCompositionTargetRendering; _contentNeedsRefresh = true; } }
/// <summary> /// Load the DrawingSurface's content. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void DrawingSurface_Loaded(Object sender, System.Windows.RoutedEventArgs e) { if (IsInDesignMode) return; if (this.graphicsDeviceService == null) { DeviceService.StartD3D(Window.GetWindow(this)); this.graphicsDeviceService = GraphicsDeviceService.AddRef(new WindowInteropHelper(Application.Current.MainWindow).Handle, 1, 1); this.graphicsDeviceService.DeviceResetting += GraphicsDeviceService_DeviceResetting; if (this.LoadContent != null) this.LoadContent(this, new GraphicsDeviceEventArgs(this.GraphicsDevice)); this.CreateRenderTarget(); CompositionTarget.Rendering += this.RenderSurface; this.needsRefresh = true; } }