예제 #1
0
        public unsafe Span <T> AsSpan <T>(ID3D11Texture1D resource, int mipSlice, int arraySlice) where T : unmanaged
        {
            resource.CalculateSubResourceIndex(mipSlice, arraySlice, out int mipSize);
            Span <byte> source = new(DataPointer.ToPointer(), mipSize *resource.Description.Format.SizeOfInBytes());

            return(MemoryMarshal.Cast <byte, T>(source));
        }
예제 #2
0
        public ShaderResourceViewDescription1(
            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))
            {
                var 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="DepthStencilViewDescription"/> 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>
        /// <param name="flags"></param>
        public DepthStencilViewDescription(
            ID3D11Texture1D texture,
            bool isArray,
            Format format               = Format.Unknown,
            int mipSlice                = 0,
            int firstArraySlice         = 0,
            int arraySize               = -1,
            DepthStencilViewFlags flags = DepthStencilViewFlags.None) : this()
        {
            ViewDimension = isArray ? DepthStencilViewDimension.Texture1DArray : DepthStencilViewDimension.Texture1D;
            Flags         = flags;
            if (format == Format.Unknown ||
                (arraySize == -1 && DepthStencilViewDimension.Texture1DArray == ViewDimension))
            {
                var textureDesc = texture.Description;
                if (format == Format.Unknown)
                {
                    format = textureDesc.Format;
                }
                if (arraySize == -1)
                {
                    arraySize = textureDesc.ArraySize - firstArraySlice;
                }
            }

            Format = format;
            switch (ViewDimension)
            {
            case DepthStencilViewDimension.Texture1D:
                Texture1D.MipSlice = mipSlice;
                break;

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

            default:
                break;
            }
        }
예제 #4
0
        public RenderTargetViewDescription(
            ID3D11Texture1D texture,
            bool isArray,
            Format format       = Format.Unknown,
            int mipSlice        = 0,
            int firstArraySlice = 0,
            int arraySize       = -1)
            : this()
        {
            ViewDimension = isArray ? RenderTargetViewDimension.Texture1DArray : RenderTargetViewDimension.Texture1D;
            if (format == Format.Unknown ||
                (arraySize == -1 && RenderTargetViewDimension.Texture1DArray == ViewDimension))
            {
                var textureDesc = texture.Description;
                if (format == Format.Unknown)
                {
                    format = textureDesc.Format;
                }
                if (arraySize == -1)
                {
                    arraySize = textureDesc.ArraySize - firstArraySlice;
                }
            }

            Format = format;
            switch (ViewDimension)
            {
            case RenderTargetViewDimension.Texture1D:
                Texture1D.MipSlice = mipSlice;
                break;

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

            default:
                break;
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="UnorderedAccessViewDescription1"/> 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 UnorderedAccessViewDescription1(
            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)))
            {
                var 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;
            }
        }
예제 #6
0
 public unsafe Span <T> AsSpan <T>(ID3D11Texture1D resource, int mipSlice, int arraySlice)
 {
     resource.CalculateSubResourceIndex(mipSlice, arraySlice, out int mipSize);
     return(new Span <T>(DataPointer.ToPointer(), mipSize * resource.Description.Format.SizeOfInBytes()));
 }