public ShaderResourceViewDescription( ID3D11Texture1D texture, bool isArray, Format format = Format.Unknown, int mostDetailedMip = 0, int mipLevels = -1, int firstArraySlice = 0, int arraySize = -1) : this() { ViewDimension = isArray ? ShaderResourceViewDimension.Texture1DArray : ShaderResourceViewDimension.Texture1D; if (format == Format.Unknown || mipLevels == -1 || (arraySize == -1 && ShaderResourceViewDimension.Texture1DArray == ViewDimension)) { Texture1DDescription textureDesc = texture.Description; if (format == Format.Unknown) { format = textureDesc.Format; } if (mipLevels == -1) { mipLevels = textureDesc.MipLevels - mostDetailedMip; } if (arraySize == -1) { arraySize = textureDesc.ArraySize - firstArraySlice; } } Format = format; switch (ViewDimension) { case ShaderResourceViewDimension.Texture1D: Texture1D.MostDetailedMip = mostDetailedMip; Texture1D.MipLevels = mipLevels; break; case ShaderResourceViewDimension.Texture1DArray: Texture1DArray.MostDetailedMip = mostDetailedMip; Texture1DArray.MipLevels = mipLevels; Texture1DArray.FirstArraySlice = firstArraySlice; Texture1DArray.ArraySize = arraySize; break; default: break; } }
/// <summary> /// Initializes a new instance of the <see cref="UnorderedAccessViewDescription"/> struct. /// </summary> /// <param name="texture"></param> /// <param name="isArray"></param> /// <param name="format"></param> /// <param name="mipSlice"></param> /// <param name="firstArraySlice"></param> /// <param name="arraySize"></param> public UnorderedAccessViewDescription( ID3D11Texture1D texture, bool isArray, Format format = Format.Unknown, int mipSlice = 0, int firstArraySlice = 0, int arraySize = -1) : this() { ViewDimension = isArray ? UnorderedAccessViewDimension.Texture1DArray : UnorderedAccessViewDimension.Texture1D; if (format == Format.Unknown || (-1 == arraySize && (UnorderedAccessViewDimension.Texture1DArray == ViewDimension))) { Texture1DDescription textureDesc = texture.Description; if (format == Format.Unknown) { format = textureDesc.Format; } if (arraySize == -1) { arraySize = textureDesc.ArraySize - firstArraySlice; } } Format = format; switch (ViewDimension) { case UnorderedAccessViewDimension.Texture1D: Texture1D.MipSlice = mipSlice; break; case UnorderedAccessViewDimension.Texture1DArray: Texture1DArray.MipSlice = mipSlice; Texture1DArray.FirstArraySlice = firstArraySlice; Texture1DArray.ArraySize = arraySize; break; } }