コード例 #1
0
ファイル: Device.cs プロジェクト: Wumpf/ClearSight
        protected override void CreateRenderTargetViewImpl(DescriptorHeap target, uint descriptorHeapSlot, Resource resource, ref RenderTargetViewDescription description)
        {
            var renderTargetViewDescription = new SharpDX.Direct3D12.RenderTargetViewDescription
            {
                Format = Memory.Enums.ToDXGIFormat[(int) description.Format],
                Dimension = Memory.Enums.ToRTVDimension[(int)description.Dimension]
            };
            switch (description.Dimension)
            {
                case Dimension.Buffer:
                    renderTargetViewDescription.Buffer.ElementCount = (int) description.Buffer.ElementCount;
                    renderTargetViewDescription.Buffer.FirstElement = (int) description.Buffer.FirstElement;
                    break;
                case Dimension.Texture1D:
                    renderTargetViewDescription.Texture1D.MipSlice = (int) description.Texture.MipSlice;
                    break;
                case Dimension.Texture1DArray:
                    renderTargetViewDescription.Texture1DArray.MipSlice = (int)description.Texture.MipSlice;
                    renderTargetViewDescription.Texture1DArray.FirstArraySlice = (int) description.Texture.FirstSlice;
                    renderTargetViewDescription.Texture1DArray.ArraySize = (int) description.Texture.SliceCount;
                    break;
                case Dimension.Texture2D:
                    renderTargetViewDescription.Texture2D.MipSlice = (int)description.Texture.MipSlice;
                    renderTargetViewDescription.Texture2D.PlaneSlice = 0; // Not yet supported.
                    break;
                case Dimension.Texture2DArray:
                    renderTargetViewDescription.Texture2DArray.MipSlice = (int)description.Texture.MipSlice;
                    renderTargetViewDescription.Texture2DArray.FirstArraySlice = (int)description.Texture.FirstSlice;
                    renderTargetViewDescription.Texture2DArray.ArraySize = (int)description.Texture.SliceCount;
                    renderTargetViewDescription.Texture2DArray.PlaneSlice = 0; // Not yet supported.
                    break;
                case Dimension.Texture2DMs:
                    // nothing
                    break;
                case Dimension.Texture2DMsArray:
                    renderTargetViewDescription.Texture2DMSArray.FirstArraySlice = (int)description.Texture.FirstSlice;
                    renderTargetViewDescription.Texture2DMSArray.ArraySize = (int)description.Texture.SliceCount;
                    break;
                case Dimension.Texture3D:
                    renderTargetViewDescription.Texture3D.MipSlice = (int)description.Texture.MipSlice;
                    renderTargetViewDescription.Texture3D.FirstDepthSlice = (int)description.Texture.FirstSlice;
                    renderTargetViewDescription.Texture3D.DepthSliceCount = (int)description.Texture.SliceCount;
                    break;
                default:
                    throw new NotImplementedException("Given render target memory dimension not yet supported!");
            }

            DeviceD3D12.CreateRenderTargetView(((Memory.Resource)resource).ResourceD3D12, renderTargetViewDescription, ((Binding.DescriptorHeap)target).GetCPUHandle(descriptorHeapSlot));
        }
コード例 #2
0
ファイル: Device.cs プロジェクト: eltld/ClearSight
        protected override void CreateRenderTargetViewImpl(DescriptorHeap target, uint descriptorHeapSlot, Resource resource, ref RenderTargetViewDescription description)
        {
            var renderTargetViewDescription = new SharpDX.Direct3D12.RenderTargetViewDescription
            {
                Format    = Memory.Enums.ToDXGIFormat[(int)description.Format],
                Dimension = Memory.Enums.ToRTVDimension[(int)description.Dimension]
            };

            switch (description.Dimension)
            {
            case Dimension.Buffer:
                renderTargetViewDescription.Buffer.ElementCount = (int)description.Buffer.ElementCount;
                renderTargetViewDescription.Buffer.FirstElement = (int)description.Buffer.FirstElement;
                break;

            case Dimension.Texture1D:
                renderTargetViewDescription.Texture1D.MipSlice = (int)description.Texture.MipSlice;
                break;

            case Dimension.Texture1DArray:
                renderTargetViewDescription.Texture1DArray.MipSlice        = (int)description.Texture.MipSlice;
                renderTargetViewDescription.Texture1DArray.FirstArraySlice = (int)description.Texture.FirstSlice;
                renderTargetViewDescription.Texture1DArray.ArraySize       = (int)description.Texture.SliceCount;
                break;

            case Dimension.Texture2D:
                renderTargetViewDescription.Texture2D.MipSlice   = (int)description.Texture.MipSlice;
                renderTargetViewDescription.Texture2D.PlaneSlice = 0;     // Not yet supported.
                break;

            case Dimension.Texture2DArray:
                renderTargetViewDescription.Texture2DArray.MipSlice        = (int)description.Texture.MipSlice;
                renderTargetViewDescription.Texture2DArray.FirstArraySlice = (int)description.Texture.FirstSlice;
                renderTargetViewDescription.Texture2DArray.ArraySize       = (int)description.Texture.SliceCount;
                renderTargetViewDescription.Texture2DArray.PlaneSlice      = 0; // Not yet supported.
                break;

            case Dimension.Texture2DMs:
                // nothing
                break;

            case Dimension.Texture2DMsArray:
                renderTargetViewDescription.Texture2DMSArray.FirstArraySlice = (int)description.Texture.FirstSlice;
                renderTargetViewDescription.Texture2DMSArray.ArraySize       = (int)description.Texture.SliceCount;
                break;

            case Dimension.Texture3D:
                renderTargetViewDescription.Texture3D.MipSlice        = (int)description.Texture.MipSlice;
                renderTargetViewDescription.Texture3D.FirstDepthSlice = (int)description.Texture.FirstSlice;
                renderTargetViewDescription.Texture3D.DepthSliceCount = (int)description.Texture.SliceCount;
                break;

            default:
                throw new NotImplementedException("Given render target memory dimension not yet supported!");
            }

            DeviceD3D12.CreateRenderTargetView(((Memory.Resource)resource).ResourceD3D12, renderTargetViewDescription, ((Binding.DescriptorHeap)target).GetCPUHandle(descriptorHeapSlot));
        }
コード例 #3
0
ファイル: Device.cs プロジェクト: Wumpf/ClearSight
 public override Resource Create(ref Resource.Descriptor desc, string label = "<unnamed resource>")
 {
     return new Memory.Resource(ref desc, this, label);
 }