private void RenderToFile(Action render) { var gfx = GraphicsDeviceService.GraphicsDevice; var pp = gfx.PresentationParameters; var oldViewport = gfx.Viewport; if (_screenshotRenderTarget == null) _screenshotRenderTarget = new AutoRenderTarget2D( GraphicsDeviceService.GraphicsDevice, () => new AutoRenderTarget2D.CreationData { Width = GraphicsDeviceService.GraphicsDevice.Viewport.Width, Height = GraphicsDeviceService.GraphicsDevice.Viewport.Height, DepthStencilState = GraphicsDeviceService.GraphicsDevice.DepthStencilState, }); _screenshotRenderTarget.SetAsRenderTarget(); DefaultRenderTarget = _screenshotRenderTarget.GetTexture(); render(); gfx.SetRenderTarget(DefaultRenderTarget = null); gfx.Viewport = oldViewport; var screenshot = _screenshotRenderTarget.GetTexture(); using (var stream = System.IO.File.OpenWrite(GetScreenshotPath())) screenshot.SaveAsJpeg(stream, screenshot.Width, screenshot.Height); }
/// <summary> /// Called when unmanaged content is to be disposed such as at shutdown. /// </summary> public virtual void UnloadContent() { if (_screenshotRenderTarget != null) _screenshotRenderTarget.Dispose(); _screenshotRenderTarget = null; foreach (var item in Components) item.UnloadContent(); Content.Unload(); }