Пример #1
0
        /// <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();
        }
Пример #2
0
        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();
        }