/// <summary> /// Initializes a new instance of the <see cref="D3D11RenderTargetViewDesc"/> struct. /// </summary> /// <param name="buffer">A buffer.</param> /// <param name="format">The viewing format.</param> /// <param name="firstElement">The buffer and the first element to access.</param> /// <param name="numElements">The total number of elements in the view.</param> public D3D11RenderTargetViewDesc( D3D11Buffer buffer, DxgiFormat format, uint firstElement, uint numElements) { if (buffer == null) { throw new ArgumentNullException("buffer"); } this.buffer = new D3D11BufferRtv(); this.texture1D = new D3D11Texture1DRtv(); this.texture1DArray = new D3D11Texture1DArrayRtv(); this.texture2D = new D3D11Texture2DRtv(); this.texture2DArray = new D3D11Texture2DArrayRtv(); this.texture2DMs = new D3D11Texture2DMsRtv(); this.texture2DMsArray = new D3D11Texture2DMsArrayRtv(); this.texture3D = new D3D11Texture3DRtv(); this.format = format; this.viewDimension = D3D11RtvDimension.Buffer; this.buffer = new D3D11BufferRtv { FirstElement = firstElement, NumElements = numElements }; }
/// <summary> /// Initializes a new instance of the <see cref="D3D11RenderTargetViewDesc"/> struct. /// </summary> /// <param name="texture">A 3D texture.</param> /// <param name="format">The viewing format.</param> /// <param name="mipSlice">The index of the mipmap level to use mip slice.</param> /// <param name="firtWSlice">The first depth level to use.</param> /// <param name="wsize">The number of depth levels to use in the render-target view.</param> public D3D11RenderTargetViewDesc( D3D11Texture3D texture, DxgiFormat format, uint mipSlice, uint firtWSlice, uint wsize) { if (texture == null) { throw new ArgumentNullException("texture"); } this.buffer = new D3D11BufferRtv(); this.texture1D = new D3D11Texture1DRtv(); this.texture1DArray = new D3D11Texture1DArrayRtv(); this.texture2D = new D3D11Texture2DRtv(); this.texture2DArray = new D3D11Texture2DArrayRtv(); this.texture2DMs = new D3D11Texture2DMsRtv(); this.texture2DMsArray = new D3D11Texture2DMsArrayRtv(); this.texture3D = new D3D11Texture3DRtv(); this.viewDimension = D3D11RtvDimension.Texture3D; if (format == DxgiFormat.Unknown || wsize == uint.MaxValue) { var description = texture.Description; if (format == DxgiFormat.Unknown) { format = description.Format; } if (wsize == uint.MaxValue) { wsize = description.Depth - firtWSlice; } } this.format = format; this.texture3D = new D3D11Texture3DRtv { MipSlice = mipSlice, FirstWSlice = firtWSlice, WSize = wsize }; }
/// <summary> /// Initializes a new instance of the <see cref="D3D11RenderTargetViewDesc"/> struct. /// </summary> /// <param name="texture">A 2D texture.</param> /// <param name="viewDimension">The resource type of the view.</param> /// <param name="format">The viewing format.</param> /// <param name="mipSlice">The index of the mipmap level to use mip slice.</param> /// <param name="firtArraySlice">The index of the first element to use in an array of elements.</param> /// <param name="arraySize">The number of elements in the array.</param> public D3D11RenderTargetViewDesc( D3D11Texture2D texture, D3D11RtvDimension viewDimension, DxgiFormat format, uint mipSlice, uint firtArraySlice, uint arraySize) { if (texture == null) { throw new ArgumentNullException("texture"); } this.buffer = new D3D11BufferRtv(); this.texture1D = new D3D11Texture1DRtv(); this.texture1DArray = new D3D11Texture1DArrayRtv(); this.texture2D = new D3D11Texture2DRtv(); this.texture2DArray = new D3D11Texture2DArrayRtv(); this.texture2DMs = new D3D11Texture2DMsRtv(); this.texture2DMsArray = new D3D11Texture2DMsArrayRtv(); this.texture3D = new D3D11Texture3DRtv(); this.viewDimension = viewDimension; if (format == DxgiFormat.Unknown || (arraySize == uint.MaxValue && (viewDimension == D3D11RtvDimension.Texture2DArray || viewDimension == D3D11RtvDimension.Texture2DMsArray))) { var description = texture.Description; if (format == DxgiFormat.Unknown) { format = description.Format; } if (arraySize == uint.MaxValue) { arraySize = description.ArraySize - firtArraySlice; } } this.format = format; switch (viewDimension) { case D3D11RtvDimension.Texture2D: this.texture2D = new D3D11Texture2DRtv { MipSlice = mipSlice }; break; case D3D11RtvDimension.Texture2DArray: this.texture2DArray = new D3D11Texture2DArrayRtv { MipSlice = mipSlice, FirstArraySlice = firtArraySlice, ArraySize = arraySize }; break; case D3D11RtvDimension.Texture2DMs: this.texture2DMs = new D3D11Texture2DMsRtv { }; break; case D3D11RtvDimension.Texture2DMsArray: this.texture2DMsArray = new D3D11Texture2DMsArrayRtv { FirstArraySlice = firtArraySlice, ArraySize = arraySize }; break; default: throw new ArgumentOutOfRangeException("viewDimension"); } }
/// <summary> /// Initializes a new instance of the <see cref="D3D11RenderTargetViewDesc"/> struct. /// </summary> /// <param name="viewDimension">The resource type of the view.</param> /// <param name="format">The viewing format.</param> /// <param name="mipSlice">The index of the mipmap level to use mip slice.</param> /// <param name="firtArraySlice">The index of the first element to use in an array of elements.</param> /// <param name="arraySize">The number of elements in the array.</param> public D3D11RenderTargetViewDesc( D3D11RtvDimension viewDimension, DxgiFormat format, uint mipSlice, uint firtArraySlice, uint arraySize) { this.buffer = new D3D11BufferRtv(); this.texture1D = new D3D11Texture1DRtv(); this.texture1DArray = new D3D11Texture1DArrayRtv(); this.texture2D = new D3D11Texture2DRtv(); this.texture2DArray = new D3D11Texture2DArrayRtv(); this.texture2DMs = new D3D11Texture2DMsRtv(); this.texture2DMsArray = new D3D11Texture2DMsArrayRtv(); this.texture3D = new D3D11Texture3DRtv(); this.format = format; this.viewDimension = viewDimension; switch (viewDimension) { case D3D11RtvDimension.Buffer: this.buffer = new D3D11BufferRtv { FirstElement = mipSlice, NumElements = firtArraySlice }; break; case D3D11RtvDimension.Texture1D: this.texture1D = new D3D11Texture1DRtv { MipSlice = mipSlice }; break; case D3D11RtvDimension.Texture1DArray: this.texture1DArray = new D3D11Texture1DArrayRtv { MipSlice = mipSlice, FirstArraySlice = firtArraySlice, ArraySize = arraySize }; break; case D3D11RtvDimension.Texture2D: this.texture2D = new D3D11Texture2DRtv { MipSlice = mipSlice }; break; case D3D11RtvDimension.Texture2DArray: this.texture2DArray = new D3D11Texture2DArrayRtv { MipSlice = mipSlice, FirstArraySlice = firtArraySlice, ArraySize = arraySize }; break; case D3D11RtvDimension.Texture2DMs: this.texture2DMs = new D3D11Texture2DMsRtv { }; break; case D3D11RtvDimension.Texture2DMsArray: this.texture2DMsArray = new D3D11Texture2DMsArrayRtv { FirstArraySlice = firtArraySlice, ArraySize = arraySize }; break; case D3D11RtvDimension.Texture3D: this.texture3D = new D3D11Texture3DRtv { MipSlice = mipSlice, FirstWSlice = firtArraySlice, WSize = arraySize }; break; default: throw new ArgumentOutOfRangeException("viewDimension"); } }