示例#1
0
        public D3D11_SHADER_RESOURCE_VIEW_DESC(ID3D11Texture1D *pTex1D, D3D_SRV_DIMENSION viewDimension, DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN, [NativeTypeName("UINT")] uint mostDetailedMip = 0, [NativeTypeName("UINT")] uint mipLevels = unchecked ((uint)-1), [NativeTypeName("UINT")] uint firstArraySlice = 0, [NativeTypeName("UINT")] uint arraySize = unchecked ((uint)-1))
        {
            ViewDimension = viewDimension;

            if ((DXGI_FORMAT_UNKNOWN == format) || (unchecked ((uint)-1) == mipLevels) || ((unchecked ((uint)-1) == arraySize) && (D3D11_SRV_DIMENSION_TEXTURE1DARRAY == viewDimension)))
            {
                D3D11_TEXTURE1D_DESC TexDesc;
                pTex1D->GetDesc(&TexDesc);

                if (DXGI_FORMAT_UNKNOWN == format)
                {
                    format = TexDesc.Format;
                }

                if (unchecked ((uint)-1) == mipLevels)
                {
                    mipLevels = TexDesc.MipLevels - mostDetailedMip;
                }

                if (unchecked ((uint)-1) == arraySize)
                {
                    arraySize = TexDesc.ArraySize - firstArraySlice;
                }
            }

            Format    = format;
            Anonymous = default;

            switch (viewDimension)
            {
            case D3D11_SRV_DIMENSION_TEXTURE1D:
            {
                Anonymous.Texture1D.MostDetailedMip = mostDetailedMip;
                Anonymous.Texture1D.MipLevels       = mipLevels;
                break;
            }

            case D3D11_SRV_DIMENSION_TEXTURE1DARRAY:
            {
                Anonymous.Texture1DArray.MostDetailedMip = mostDetailedMip;
                Anonymous.Texture1DArray.MipLevels       = mipLevels;
                Anonymous.Texture1DArray.FirstArraySlice = firstArraySlice;
                Anonymous.Texture1DArray.ArraySize       = arraySize;
                break;
            }

            default:
            {
                break;
            }
            }
        }
示例#2
0
    public D3D11_DEPTH_STENCIL_VIEW_DESC(ID3D11Texture1D *pTex1D, D3D11_DSV_DIMENSION viewDimension, DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN, uint mipSlice = 0, uint firstArraySlice = 0, uint arraySize = unchecked ((uint)-1), uint flags = 0)
    {
        ViewDimension = viewDimension;
        Flags         = flags;

        if ((DXGI_FORMAT_UNKNOWN == format) || ((unchecked ((uint)-1) == arraySize) && (D3D11_DSV_DIMENSION_TEXTURE1DARRAY == viewDimension)))
        {
            D3D11_TEXTURE1D_DESC TexDesc;
            pTex1D->GetDesc(&TexDesc);

            if (DXGI_FORMAT_UNKNOWN == format)
            {
                format = TexDesc.Format;
            }

            if (unchecked ((uint)-1 == arraySize))
            {
                arraySize = TexDesc.ArraySize - firstArraySlice;
            }
        }

        Format    = format;
        Anonymous = default;

        switch (viewDimension)
        {
        case D3D11_DSV_DIMENSION_TEXTURE1D:
        {
            Anonymous.Texture1D.MipSlice = mipSlice;
            break;
        }

        case D3D11_DSV_DIMENSION_TEXTURE1DARRAY:
        {
            Anonymous.Texture1DArray.MipSlice        = mipSlice;
            Anonymous.Texture1DArray.FirstArraySlice = firstArraySlice;
            Anonymous.Texture1DArray.ArraySize       = arraySize;
            break;
        }

        default:
        {
            break;
        }
        }
    }
        public D3D11_UNORDERED_ACCESS_VIEW_DESC1(ID3D11Texture1D *pTex1D, D3D11_UAV_DIMENSION viewDimension, DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN, [NativeTypeName("UINT")] uint mipSlice = 0, [NativeTypeName("UINT")] uint firstArraySlice = 0, [NativeTypeName("UINT")] uint arraySize = unchecked ((uint)-1))
        {
            ViewDimension = viewDimension;
            if ((DXGI_FORMAT_UNKNOWN == format) || ((unchecked ((uint)-1) == arraySize) && (D3D11_UAV_DIMENSION_TEXTURE1DARRAY == viewDimension)))
            {
                D3D11_TEXTURE1D_DESC TexDesc;
                pTex1D->GetDesc(&TexDesc);

                if (DXGI_FORMAT_UNKNOWN == format)
                {
                    format = TexDesc.Format;
                }

                if (unchecked ((uint)-1) == arraySize)
                {
                    arraySize = TexDesc.ArraySize - firstArraySlice;
                }
            }

            Format    = format;
            Anonymous = default;

            switch (viewDimension)
            {
            case D3D11_UAV_DIMENSION_TEXTURE1D:
            {
                Anonymous.Texture1D.MipSlice = mipSlice;
                break;
            }

            case D3D11_UAV_DIMENSION_TEXTURE1DARRAY:
            {
                Anonymous.Texture1DArray.MipSlice        = mipSlice;
                Anonymous.Texture1DArray.FirstArraySlice = firstArraySlice;
                Anonymous.Texture1DArray.ArraySize       = arraySize;
                break;
            }

            default:
            {
                break;
            }
            }
        }
        public D3D11_VIEWPORT(ID3D11Texture1D *pTex1D, ID3D11RenderTargetView *pRTView, [NativeTypeName("FLOAT")] float topLeftX = 0.0f, [NativeTypeName("FLOAT")] float minDepth = D3D11_MIN_DEPTH, [NativeTypeName("FLOAT")] float maxDepth = D3D11_MAX_DEPTH)
        {
            D3D11_TEXTURE1D_DESC TexDesc;

            pTex1D->GetDesc(&TexDesc);

            D3D11_RENDER_TARGET_VIEW_DESC RTVDesc;

            pRTView->GetDesc(&RTVDesc);

            uint MipSlice = 0;

            switch (RTVDesc.ViewDimension)
            {
            case D3D11_RTV_DIMENSION_TEXTURE1D:
            {
                MipSlice = RTVDesc.Anonymous.Texture1D.MipSlice;
                break;
            }

            case D3D11_RTV_DIMENSION_TEXTURE1DARRAY:
            {
                MipSlice = RTVDesc.Anonymous.Texture1DArray.MipSlice;
                break;
            }

            default:
            {
                break;
            }
            }

            var SubResourceWidth = TexDesc.Width / (1u << unchecked ((int)MipSlice));

            TopLeftX = topLeftX;
            TopLeftY = 0.0f;
            Width    = ((SubResourceWidth != 0) ? SubResourceWidth : 1) - topLeftX;
            Height   = 1.0f;
            MinDepth = minDepth;
            MaxDepth = maxDepth;
        }