public override void SetDefaultRenderTarget(int width, int height, bool doClearColor) { SharpDX.Direct3D12.ResourceBarrier barrier = new SharpDX.Direct3D12.ResourceBarrier(); barrier.Type = SharpDX.Direct3D12.ResourceBarrierType.Transition; barrier.Flags = SharpDX.Direct3D12.ResourceBarrierFlags.None; if (_sampleDesc.Count > 1) { barrier.Transition = new SharpDX.Direct3D12.ResourceTransitionBarrier(_backBuffersAA[_frameIndex], SharpDX.Direct3D12.ResourceStates.ResolveSource, SharpDX.Direct3D12.ResourceStates.RenderTarget) { Subresource = 0 }; } else { barrier.Transition = new SharpDX.Direct3D12.ResourceTransitionBarrier(_backBuffers[_frameIndex], SharpDX.Direct3D12.ResourceStates.Present, SharpDX.Direct3D12.ResourceStates.RenderTarget) { Subresource = 0 }; } _commands.ResourceBarrier(barrier); SharpDX.Direct3D12.CpuDescriptorHandle rtv = _heapRTV.CPUDescriptorHandleForHeapStart; rtv.Ptr += _frameIndex * _sizeRTV; if (doClearColor) { SharpDX.Mathematics.Interop.RawColor4 clearColor = new SharpDX.Mathematics.Interop.RawColor4(0.0f, 0.0f, 0.0f, 0.0f); _commands.ClearRenderTargetView(rtv, clearColor, 0, null); } SharpDX.Direct3D12.CpuDescriptorHandle dsv = _heapDSV.CPUDescriptorHandleForHeapStart; _commands.ClearDepthStencilView(dsv, SharpDX.Direct3D12.ClearFlags.FlagsStencil, 0.0f, 0, 0, null); _commands.SetRenderTargets(1, rtv, dsv); _commands.SetViewports(1, _viewport); }