示例#1
0
        internal MyRWStructuredBuffer(int elements, int stride, UavType uav, bool srv, string debugName)
        {
            m_resolution = new Vector2I(elements, 1);

            var bufferDesc = new BufferDescription(elements * stride, ResourceUsage.Default, BindFlags.ShaderResource | BindFlags.UnorderedAccess,
                                                   CpuAccessFlags.None, ResourceOptionFlags.BufferStructured, stride);

            m_resource           = new SharpDX.Direct3D11.Buffer(MyRender11.Device, bufferDesc);
            m_resource.DebugName = debugName;
            if (uav != UavType.None)
            {
                if (uav == UavType.Default)
                {
                    m_uav = new UnorderedAccessView(MyRender11.Device, m_resource);
                }
                else
                {
                    var description = new UnorderedAccessViewDescription()
                    {
                        Buffer = new UnorderedAccessViewDescription.BufferResource()
                        {
                            ElementCount = elements,
                            FirstElement = 0,
                            Flags        = uav == UavType.Append ? UnorderedAccessViewBufferFlags.Append : UnorderedAccessViewBufferFlags.Counter
                        },
                        Format    = Format.Unknown,
                        Dimension = UnorderedAccessViewDimension.Buffer
                    };
                    m_uav = new UnorderedAccessView(MyRender11.Device, m_resource, description);
                }
                m_uav.DebugName = debugName + "Uav";
            }
            if (srv)
            {
                m_srv           = new ShaderResourceView(MyRender11.Device, m_resource);
                m_srv.DebugName = debugName + "Srv";
            }
        }
示例#2
0
        internal MyRWStructuredBuffer(int elements, int stride, UavType uav, bool srv, string debugName)
        {
            m_resolution = new Vector2I(elements, 1);

            var bufferDesc = new BufferDescription(elements * stride, ResourceUsage.Default, BindFlags.ShaderResource | BindFlags.UnorderedAccess, 
                CpuAccessFlags.None, ResourceOptionFlags.BufferStructured, stride);

            m_resource = new SharpDX.Direct3D11.Buffer(MyRender11.Device, bufferDesc);
            m_resource.DebugName = debugName;
            if (uav != UavType.None)
            {
                if (uav == UavType.Default)
                    m_uav = new UnorderedAccessView(MyRender11.Device, m_resource);
                else
                {
                    var description = new UnorderedAccessViewDescription()
                    {
                        Buffer = new UnorderedAccessViewDescription.BufferResource()
                        {
                            ElementCount = elements,
                            FirstElement = 0,
                            Flags = uav == UavType.Append ? UnorderedAccessViewBufferFlags.Append : UnorderedAccessViewBufferFlags.Counter
                        },
                        Format = Format.Unknown,
                        Dimension = UnorderedAccessViewDimension.Buffer
                    };
                    m_uav = new UnorderedAccessView(MyRender11.Device, m_resource, description);
                }
                m_uav.DebugName = debugName + "Uav";
            }
            if (srv)
            {
                m_srv = new ShaderResourceView(MyRender11.Device, m_resource);
                m_srv.DebugName = debugName + "Srv";
            }
        }