예제 #1
0
        public SharpDX.Direct3D11.Buffer CreateDynamicBuffer <T>(ref T range, int sizeInBytes)
            where T : struct
        {
            BufferStaticVerifications.CheckSizeInBytes(sizeInBytes);

            var des = new BufferDescription()
            {
                Usage               = ResourceUsage.Dynamic,
                SizeInBytes         = sizeInBytes,
                BindFlags           = BindFlags.ConstantBuffer,
                CpuAccessFlags      = CpuAccessFlags.Write,
                OptionFlags         = ResourceOptionFlags.None,
                StructureByteStride = 0
            };

            return(SharpDX.Direct3D11.Buffer.Create(D3DDevice, ref range, des));
        }
예제 #2
0
        public SharpDX.Direct3D11.Buffer CreateUnorderedRWStructuredBuffer <T>(ref T[] range) where T : struct
        {
            BufferStaticVerifications.CheckSizeInBytes <T>();

            var desc = new BufferDescription()
            {
                SizeInBytes    = Unsafe.SizeOf <T>(),
                CpuAccessFlags = GetCpuAccessFlagsFromUsage(ResourceUsage.Default),
                Usage          = ResourceUsage.Default,
            };

            desc.OptionFlags |= ResourceOptionFlags.BufferStructured;
            desc.BindFlags    = BindFlags.UnorderedAccess | BindFlags.ShaderResource;

            // We keep the element size in the structure byte stride, even if it is not a structured buffer
            desc.StructureByteStride = desc.SizeInBytes / range.Length;


            return(SharpDX.Direct3D11.Buffer.Create(D3DDevice, range, desc));
        }
예제 #3
0
 public SharpDX.Direct3D11.Buffer CreateBuffer <T>(ref T data, BufferDescription desc)
     where T : struct
 {
     BufferStaticVerifications.CheckSizeInBytes(desc.SizeInBytes);
     return(SharpDX.Direct3D11.Buffer.Create(D3DDevice, ref data, desc));
 }
예제 #4
0
 public SharpDX.Direct3D11.Buffer CreateBuffer <T>(BindFlags flags, ref T range)
     where T : struct
 {
     BufferStaticVerifications.CheckSizeInBytes <T>();
     return(SharpDX.Direct3D11.Buffer.Create(D3DDevice, flags, ref range));
 }