示例#1
0
        protected override void CreateImpl()
        {
            SharpDX.Direct3D12.DescriptorHeapDescription descDx = new SharpDX.Direct3D12.DescriptorHeapDescription
            {
                DescriptorCount = (int) Desc.NumResourceDescriptors,
                NodeMask = 0
            };

            switch (Desc.Type)
            {
                case Descriptor.ResourceDescriptorType.ShaderResource:
                    descDx.Type = DescriptorHeapType.ConstantBufferViewShaderResourceViewUnorderedAccessView;
                    descDx.Flags = DescriptorHeapFlags.ShaderVisible;
                    break;
                case Descriptor.ResourceDescriptorType.Sampler:
                    descDx.Type = DescriptorHeapType.Sampler;
                    descDx.Flags = DescriptorHeapFlags.ShaderVisible;
                    break;
                case Descriptor.ResourceDescriptorType.RenderTarget:
                    descDx.Type = DescriptorHeapType.RenderTargetView;
                    descDx.Flags = DescriptorHeapFlags.None;
                    break;
                case Descriptor.ResourceDescriptorType.DepthStencil:
                    descDx.Type = DescriptorHeapType.DepthStencilView;
                    descDx.Flags = DescriptorHeapFlags.None;
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }

            DescriptorHeapDX12 = ((Device) Device).DeviceD3D12.CreateDescriptorHeap(descDx);
        }
示例#2
0
        void CreateHeaps()
        {
            _sizeRTV = _dev.GetDescriptorHandleIncrementSize(SharpDX.Direct3D12.DescriptorHeapType.RenderTargetView);

            {
                SharpDX.Direct3D12.DescriptorHeapDescription desc;
                desc.Type            = SharpDX.Direct3D12.DescriptorHeapType.RenderTargetView;
                desc.DescriptorCount = FrameCount;
                desc.Flags           = SharpDX.Direct3D12.DescriptorHeapFlags.None;
                desc.NodeMask        = 0;

                _heapRTV = _dev.CreateDescriptorHeap(desc);
            }
            {
                SharpDX.Direct3D12.DescriptorHeapDescription desc;
                desc.Type            = SharpDX.Direct3D12.DescriptorHeapType.DepthStencilView;
                desc.DescriptorCount = 1;
                desc.Flags           = SharpDX.Direct3D12.DescriptorHeapFlags.None;
                desc.NodeMask        = 0;

                _heapDSV = _dev.CreateDescriptorHeap(desc);
            }
        }
示例#3
0
        protected override void CreateImpl()
        {
            SharpDX.Direct3D12.DescriptorHeapDescription descDx = new SharpDX.Direct3D12.DescriptorHeapDescription
            {
                DescriptorCount = (int)Desc.NumResourceDescriptors,
                NodeMask        = 0
            };

            switch (Desc.Type)
            {
            case Descriptor.ResourceDescriptorType.ShaderResource:
                descDx.Type  = DescriptorHeapType.ConstantBufferViewShaderResourceViewUnorderedAccessView;
                descDx.Flags = DescriptorHeapFlags.ShaderVisible;
                break;

            case Descriptor.ResourceDescriptorType.Sampler:
                descDx.Type  = DescriptorHeapType.Sampler;
                descDx.Flags = DescriptorHeapFlags.ShaderVisible;
                break;

            case Descriptor.ResourceDescriptorType.RenderTarget:
                descDx.Type  = DescriptorHeapType.RenderTargetView;
                descDx.Flags = DescriptorHeapFlags.None;
                break;

            case Descriptor.ResourceDescriptorType.DepthStencil:
                descDx.Type  = DescriptorHeapType.DepthStencilView;
                descDx.Flags = DescriptorHeapFlags.None;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            DescriptorHeapDX12 = ((Device)Device).DeviceD3D12.CreateDescriptorHeap(descDx);
        }