/// <summary> /// this repaints the client area /// </summary> private void OnRepaint() { scheduledRedraw = false; if (swapChain == null) { return; } var timerStarted = false; swapChain.BeginFrame(); try { var dev = Device.Get(); // recompute overlay before binding rendertargets models.Overlay.Recompute(); dev.ClearRenderTargetView(swapChain.Rtv, clearColor); var size = new Size(swapChain.Width, swapChain.Height); dev.Rasterizer.SetViewport(0.0f, 0.0f, size.Width, size.Height); dev.Rasterizer.SetScissorRectangle(0, 0, size.Width, size.Height); dev.OutputMerger.SetRenderTargets(swapChain.Rtv); gpuTimer.Start(); timerStarted = true; viewMode.Repaint(size); } catch (Exception e) { models.Window.ShowErrorDialog(e, "during repaint"); } finally { if (timerStarted) { gpuTimer.Stop(); } try { swapChain.EndFrame(); } catch (SharpDXException e) { models.Window.ShowErrorDialog(e); models.Window.Window.Close(); } } models.Display.FrameTime = gpuTimer.Get(); }
private void Update(object sender, EventArgs e) { swapChain.BeginFrame(); commandList.StartRecording(); commandList.PerformResourceTransition(CommandList.BarrierType.Immediate, swapChain.ActiveBackBuffer, ResourceUsage.ReadWriteUsage.Present, ResourceUsage.ReadWriteUsage.RenderTargetColor); commandList.SetRenderTargets(descHeapRenderTargets, swapChain.ActiveSwapChainBufferIndex, null, 0); commandList.ClearRenderTargetView(CommandList.ClearTarget.Color, new Vector4(1.0f, 0.0f, 1.0f, 1.0f)); commandList.PerformResourceTransition(CommandList.BarrierType.Immediate, swapChain.ActiveBackBuffer, ResourceUsage.ReadWriteUsage.RenderTargetColor, ResourceUsage.ReadWriteUsage.Present); commandList.EndRecording(); commandQueue.ExecuteCommandList(commandList); swapChain.EndFrame(); }