private int Present(IntPtr swapChainPtr, int syncInterval, PresentFlags dwFlags) { var swapChain = (SwapChain) swapChainPtr; try { if (RenderEngine == null) { RenderEngine = new Renderer(swapChainPtr, OverlayConfig); var baseFont = new Font("Arial", 16, FontStyle.Bold); var elements = new ConcurrentDictionary<Guid, IOverlayElement>(); elements.TryAdd(FramesPerSecondID, new FramesPerSecond(baseFont) { Location = new Point(10, 10), Color = Color.Lime, AntiAliased = true, Hidden = !OverlayConfig.ShowFPS }); RenderEngine.Overlays.Add(new Overlay { Elements = elements }); RenderEngine.Overlays.Add(new Overlay()); } else { foreach (var overlay in RenderEngine?.Overlays) { overlay.Frame(); } RenderEngine?.Render(); } } catch (Exception ex) { Log.Write("Failed present: {0}", ex.Message); } finally { swapChain.Present(syncInterval, dwFlags); } return Result.Ok.Code; }
private void CleanupRenderer() { RenderEngine.Dispose(); RenderEngine = null; }