Пример #1
0
        /// <summary>
        /// Creates a new instance of the <see cref="T:SharpDX.Direct3D10.Buffer"/> class.
        /// </summary>
        /// <typeparam name="T">Type of the data to upload</typeparam>
        /// <param name="device">The device with which to associate the buffer.</param>
        /// <param name="bindFlags">Flags specifying how the buffer will be bound to the pipeline.</param>
        /// <param name="data">Initial data used to initialize the buffer.</param>
        /// <param name="sizeInBytes">The size, in bytes, of the buffer. If 0 is specified, sizeof(T) is used. </param>
        /// <param name="usage">The usage pattern for the buffer.</param>
        /// <param name="accessFlags">Flags specifying how the buffer will be accessible from the CPU.</param>
        /// <param name="optionFlags">Miscellaneous resource options.</param>
        /// <param name="structureByteStride">The size (in bytes) of the structure element for structured buffers.</param>
        /// <returns>An initialized buffer</returns>
        public static Buffer Create <T>(
            Device device,
            BindFlags bindFlags,
            ref T data,
            int sizeInBytes                 = 0,
            ResourceUsage usage             = ResourceUsage.Default,
            CpuAccessFlags accessFlags      = CpuAccessFlags.None,
            ResourceOptionFlags optionFlags = ResourceOptionFlags.None,
            int structureByteStride         = 0)
            where T : struct
        {
            var buffer = new Buffer(IntPtr.Zero);

            var description = new BufferDescription()
            {
                BindFlags      = bindFlags,
                CpuAccessFlags = accessFlags,
                OptionFlags    = optionFlags,
                SizeInBytes    = sizeInBytes == 0 ? Utilities.SizeOf <T>() : sizeInBytes,
                Usage          = usage,
            };

            unsafe
            {
                device.CreateBuffer(ref description, new DataBox((IntPtr)Interop.Fixed(ref data)), buffer);
            }
            return(buffer);
        }
Пример #2
0
        /// <summary>
        /// Creates a new instance of the <see cref="T:SharpDX.Direct3D10.Buffer"/> class.
        /// </summary>
        /// <typeparam name="T">Type of the data to upload</typeparam>
        /// <param name="device">The device with which to associate the buffer.</param>
        /// <param name="data">Initial data used to initialize the buffer.</param>
        /// <param name="description">The description.</param>
        /// <returns>
        /// An initialized buffer
        /// </returns>
        public static Buffer Create <T>(Device device, T[] data, BufferDescription description) where T : struct
        {
            var buffer = new Buffer(IntPtr.Zero);

            unsafe
            {
                if (description.SizeInBytes == 0)
                {
                    description.SizeInBytes = Utilities.SizeOf <T>() * data.Length;
                }
                device.CreateBuffer(ref description, new DataBox((IntPtr)Interop.Fixed(data)), buffer);
            }
            return(buffer);
        }
Пример #3
0
        /// <summary>
        ///   Initializes a new instance of the <see cref = "T:SharpDX.Direct3D10.Buffer" /> class.
        /// </summary>
        /// <param name = "device">The device with which to associate the buffer.</param>
        /// <param name = "data">Initial data used to initialize the buffer.</param>
        /// <param name = "sizeInBytes">The size, in bytes, of the buffer.</param>
        /// <param name = "usage">The usage pattern for the buffer.</param>
        /// <param name = "bindFlags">Flags specifying how the buffer will be bound to the pipeline.</param>
        /// <param name = "accessFlags">Flags specifying how the buffer will be accessible from the CPU.</param>
        /// <param name = "optionFlags">Miscellaneous resource options.</param>
        public Buffer(Device device, DataStream data, int sizeInBytes, ResourceUsage usage, BindFlags bindFlags,
                      CpuAccessFlags accessFlags, ResourceOptionFlags optionFlags)
            : base(IntPtr.Zero)
        {
            var description = new BufferDescription()
            {
                BindFlags      = bindFlags,
                CpuAccessFlags = accessFlags,
                OptionFlags    = optionFlags,
                SizeInBytes    = sizeInBytes,
                Usage          = usage,
            };

            device.CreateBuffer(ref description, new DataBox(data.PositionPointer, 0, 0), this);
        }
Пример #4
0
        /// <summary>
        ///   Initializes a new instance of the <see cref = "T:SharpDX.Direct3D10.Buffer" /> class.
        /// </summary>
        /// <param name = "device">The device with which to associate the buffer.</param>
        /// <param name = "sizeInBytes">The size, in bytes, of the buffer.</param>
        /// <param name = "usage">The usage pattern for the buffer.</param>
        /// <param name = "bindFlags">Flags specifying how the buffer will be bound to the pipeline.</param>
        /// <param name = "accessFlags">Flags specifying how the buffer will be accessible from the CPU.</param>
        /// <param name = "optionFlags">Miscellaneous resource options.</param>
        public Buffer(Device device, int sizeInBytes, ResourceUsage usage, BindFlags bindFlags,
                      CpuAccessFlags accessFlags, ResourceOptionFlags optionFlags)
            : base(IntPtr.Zero)
        {
            var description = new BufferDescription()
            {
                BindFlags      = bindFlags,
                CpuAccessFlags = accessFlags,
                OptionFlags    = optionFlags,
                SizeInBytes    = sizeInBytes,
                Usage          = usage,
            };

            device.CreateBuffer(ref description, null, this);
        }
Пример #5
0
 /// <summary>
 ///   Initializes a new instance of the <see cref = "T:SharpDX.Direct3D10.Buffer" /> class.
 /// </summary>
 /// <param name = "device">The device with which to associate the buffer.</param>
 /// <param name = "data">Initial data used to initialize the buffer.</param>
 /// <param name = "description">The description of the buffer.</param>
 public Buffer(Device device, DataStream data, BufferDescription description)
     : base(IntPtr.Zero)
 {
     device.CreateBuffer(ref description, new DataBox(data.PositionPointer, 0, 0), this);
 }
Пример #6
0
 /// <summary>
 ///   Initializes a new instance of the <see cref = "T:SharpDX.Direct3D10.Buffer" /> class.
 /// </summary>
 /// <param name = "device">The device with which to associate the buffer.</param>
 /// <param name = "description">The description of the buffer.</param>
 public Buffer(Device device, BufferDescription description)
     : base(IntPtr.Zero)
 {
     device.CreateBuffer(ref description, null, this);
 }