Esempio n. 1
0
        static D3D11UnorderedAccessView CreateBufferUAV(D3D11Device pDevice, D3D11Buffer pBuffer)
        {
            var descBuf = pBuffer.Description;

            D3D11UnorderedAccessViewDesc desc;

            if (descBuf.MiscOptions.HasFlag(D3D11ResourceMiscOptions.BufferAllowRawViews))
            {
                // This is a Raw Buffer
                // Format must be DXGI_FORMAT_R32_TYPELESS, when creating Raw Unordered Access View
                desc = new D3D11UnorderedAccessViewDesc(pBuffer, DxgiFormat.R32Typeless, 0, descBuf.ByteWidth / 4, D3D11BufferUavOptions.Raw);
            }
            else if (descBuf.MiscOptions.HasFlag(D3D11ResourceMiscOptions.BufferStructured))
            {
                // This is a Structured Buffer
                // Format must be must be DXGI_FORMAT_UNKNOWN, when creating a View of a Structured Buffer
                desc = new D3D11UnorderedAccessViewDesc(pBuffer, DxgiFormat.Unknown, 0, descBuf.ByteWidth / descBuf.StructureByteStride, D3D11BufferUavOptions.None);
            }
            else
            {
                throw new InvalidOperationException();
            }

            return(pDevice.CreateUnorderedAccessView(pBuffer, desc));
        }