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"; } }
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"; } }