Beispiel #1
0
        /// <summary>
        /// Creates the buffer description.
        /// </summary>
        /// <param name="size">The size (in bytes).</param>
        /// <param name="flags">The flags.</param>
        /// <param name="format">The format.</param>
        /// <param name="initData">The initial data.</param>
        /// <param name="stride">The stride.</param>
        /// <param name="usage">The usage.</param>
        /// <returns>The buffer description.</returns>
        public static GPUBufferDescription Buffer(int size, GPUBufferFlags flags, PixelFormat format = PixelFormat.Unknown, IntPtr initData = new IntPtr(), int stride = 0, GPUResourceUsage usage = GPUResourceUsage.Default)
        {
            GPUBufferDescription desc;

            desc.Size     = (uint)size;
            desc.Stride   = (uint)stride;
            desc.Flags    = flags;
            desc.Format   = format;
            desc.InitData = initData;
            desc.Usage    = usage;
            return(desc);
        }
Beispiel #2
0
        /// <summary>
        /// Creates typed buffer description.
        /// </summary>
        /// <param name="count">The elements count.</param>
        /// <param name="viewFormat">The view format.</param>
        /// <param name="isUnorderedAccess">True if use UAV, otherwise false.</param>
        /// <param name="usage">The usage.</param>
        /// <returns>The buffer description.</returns>
        /// <remarks>
        /// Example in HLSL: Buffer&lt;float4&gt;.
        /// </remarks>
        public static GPUBufferDescription Typed(int count, PixelFormat viewFormat, bool isUnorderedAccess = false, GPUResourceUsage usage = GPUResourceUsage.Default)
        {
            var bufferFlags = GPUBufferFlags.ShaderResource;

            if (isUnorderedAccess)
            {
                bufferFlags |= GPUBufferFlags.UnorderedAccess;
            }
            var stride = PixelFormatExtensions.SizeInBytes(viewFormat);

            return(Buffer(count * stride, bufferFlags, viewFormat, IntPtr.Zero, stride, usage));
        }
Beispiel #3
0
 /// <summary>
 /// Creates raw buffer description.
 /// </summary>
 /// <param name="data">The initial data.</param>
 /// <param name="size">The size (in bytes).</param>
 /// <param name="additionalFlags">The additional bindings (for example, to create a combined raw/index buffer, pass <see cref="GPUBufferFlags.IndexBuffer" />).</param>
 /// <param name="usage">The usage.</param>
 /// <returns>The buffer description.</returns>
 public static GPUBufferDescription Raw(IntPtr data, int size, GPUBufferFlags additionalFlags = GPUBufferFlags.None, GPUResourceUsage usage = GPUResourceUsage.Default)
 {
     return(Buffer(size, GPUBufferFlags.RawBuffer | additionalFlags, PixelFormat.R32_Typeless, data, sizeof(float), usage));
 }
Beispiel #4
0
 /// <summary>
 /// Creates argument buffer description.
 /// </summary>
 /// <param name="data">The initial data.</param>
 /// <param name="size">The size (in bytes).</param>
 /// <param name="usage">The usage.</param>
 /// <returns>The buffer description.</returns>
 public static GPUBufferDescription Argument(IntPtr data, int size, GPUResourceUsage usage = GPUResourceUsage.Default)
 {
     return(Buffer(size, GPUBufferFlags.Argument, PixelFormat.Unknown, data, 0, usage));
 }
Beispiel #5
0
        /// <summary>
        /// Creates index buffer description.
        /// </summary>
        /// <param name="elementStride">The element stride.</param>
        /// <param name="elementsCount">The elements count.</param>
        /// <param name="usage">The usage mode.</param>
        /// <returns>The buffer description.</returns>
        public static GPUBufferDescription Index(int elementStride, int elementsCount, GPUResourceUsage usage = GPUResourceUsage.Default)
        {
            var format = elementStride == 4 ? PixelFormat.R32_UInt : PixelFormat.R16_UInt;

            return(Buffer(elementsCount * elementStride, GPUBufferFlags.IndexBuffer, format, new IntPtr(), elementStride, usage));
        }
Beispiel #6
0
 /// <summary>
 /// Creates vertex buffer description.
 /// </summary>
 /// <param name="size">The size (in bytes).</param>
 /// <param name="usage">The usage mode.</param>
 /// <returns>The buffer description.</returns>
 public static GPUBufferDescription Vertex(int size, GPUResourceUsage usage = GPUResourceUsage.Default)
 {
     return(Buffer(size, GPUBufferFlags.VertexBuffer, PixelFormat.Unknown, new IntPtr(), 0, usage));
 }
Beispiel #7
0
 /// <summary>
 /// Creates vertex buffer description.
 /// </summary>
 /// <param name="elementStride">The element stride.</param>
 /// <param name="elementsCount">The elements count.</param>
 /// <param name="usage">The usage mode.</param>
 /// <returns>The buffer description.</returns>
 public static GPUBufferDescription Vertex(int elementStride, int elementsCount, GPUResourceUsage usage = GPUResourceUsage.Default)
 {
     return(Buffer(elementsCount * elementStride, GPUBufferFlags.VertexBuffer, PixelFormat.Unknown, new IntPtr(), elementStride, usage));
 }