/// <summary>
 /// Initializes a new instance of the <see cref="UnorderedAccessViewDescription"/> struct.
 /// </summary>
 /// <param name="buffer"></param>
 /// <param name="format"></param>
 /// <param name="firstElement"></param>
 /// <param name="numElements"></param>
 /// <param name="flags"><see cref="BufferUnorderedAccessViewFlags"/> options flags for the resource.</param>
 public UnorderedAccessViewDescription(
     ID3D11Buffer buffer,
     Format format,
     int firstElement = 0,
     int numElements  = 0,
     BufferUnorderedAccessViewFlags flags = BufferUnorderedAccessViewFlags.None) : this()
 {
     Format              = format;
     ViewDimension       = UnorderedAccessViewDimension.Buffer;
     Buffer.FirstElement = firstElement;
     Buffer.NumElements  = numElements;
     Buffer.Flags        = flags;
 }
Example #2
0
    /// <summary>
    /// Initializes a new instance of the <see cref="UnorderedAccessViewDescription1"/> struct.
    /// </summary>
    /// <param name="viewDimension">The <see cref="UnorderedAccessViewDimension"/></param>
    /// <param name="format">The <see cref="DXGI.Format"/> to use or <see cref="Format.Unknown"/>.</param>
    /// <param name="mipSlice">The index of the mipmap level to use mip slice or FirstElement for BUFFER.</param>
    /// <param name="firstArraySlice">The index of the first texture to use in an array of textures or NumElements for BUFFER or FirstWSlice for TEXTURE3D.</param>
    /// <param name="arraySize">Number of textures in the array or WSize for TEXTURE3D.</param>
    /// <param name="flags"><see cref="BufferUnorderedAccessViewFlags"/> options flags for the resource.</param>
    /// <param name="planeSlice"></param>
    public UnorderedAccessViewDescription1(
        UnorderedAccessViewDimension viewDimension,
        Format format       = Format.Unknown,
        int mipSlice        = 0,
        int firstArraySlice = 0,
        int arraySize       = -1,
        BufferUnorderedAccessViewFlags flags = BufferUnorderedAccessViewFlags.None,
        int planeSlice = 0) : this()
    {
        Format        = format;
        ViewDimension = viewDimension;
        switch (viewDimension)
        {
        case UnorderedAccessViewDimension.Buffer:
            Buffer.FirstElement = mipSlice;
            Buffer.NumElements  = firstArraySlice;
            Buffer.Flags        = flags;
            break;

        case UnorderedAccessViewDimension.Texture1D:
            Texture1D.MipSlice = mipSlice;
            break;

        case UnorderedAccessViewDimension.Texture1DArray:
            Texture1DArray.MipSlice        = mipSlice;
            Texture1DArray.FirstArraySlice = firstArraySlice;
            Texture1DArray.ArraySize       = arraySize;
            break;

        case UnorderedAccessViewDimension.Texture2D:
            Texture2D.MipSlice   = mipSlice;
            Texture2D.PlaneSlice = planeSlice;
            break;

        case UnorderedAccessViewDimension.Texture2DArray:
            Texture2DArray.MipSlice        = mipSlice;
            Texture2DArray.FirstArraySlice = firstArraySlice;
            Texture2DArray.ArraySize       = arraySize;
            Texture2DArray.PlaneSlice      = planeSlice;
            break;

        case UnorderedAccessViewDimension.Texture3D:
            Texture3D.MipSlice    = mipSlice;
            Texture3D.FirstWSlice = firstArraySlice;
            Texture3D.WSize       = arraySize;
            break;
        }
    }