private void Render() { var now = m_stopwatch.Elapsed; TimeSpan elapsed; if (m_previousFrame == TimeSpan.MinValue) { elapsed = TimeSpan.Zero; } else { elapsed = now - m_previousFrame; } m_previousFrame = now; if (elapsed != TimeSpan.Zero) { m_framesPerSecond = m_framesPerSecond * 0.95 + (1 / elapsed.TotalSeconds) * 0.05; } WinApi.ValidateRect(m_display.Handle, IntPtr.Zero); m_logic.Render(elapsed); var result = WinApi.SwapBuffers(m_display.DeviceContext); if (!result) { var error = WinApi.GetLastError(); Console.WriteLine("Error : " + error); } }