Ejemplo n.º 1
0
        void CreateViews(string name, BindFlags flags, SlimDX.Direct3D11.Resource resource)
        {
            if (flags.HasFlag(BindFlags.RenderTarget))
            {
                var view = new RenderTargetView(m_D3dDevice, resource);
                m_RTVList.Add(name, view);
            }

            if (flags.HasFlag(BindFlags.DepthStencil))
            {
                var view = new DepthStencilView(m_D3dDevice, resource);
                m_DSVList.Add(name, view);
            }

            if (flags.HasFlag(BindFlags.ShaderResource))
            {
                var view = new ShaderResourceView(m_D3dDevice, resource);
                m_SRVList.Add(name, view);
            }

            if (flags.HasFlag(BindFlags.UnorderedAccess))
            {
                var view = new UnorderedAccessView(m_D3dDevice, resource);
                m_UAVList.Add(name, view);
            }
        }
Ejemplo n.º 2
0
        void resize(int capacity)
        {
            if (maximumCapacity > 0 && capacity > maximumCapacity)
            {
                throw new ArgumentException("Attempting to resize a dynamic buffer over it’s maximum capacity");
            }

            BufferDesc desc = new BufferDesc(false);

            desc.Usage          = Usage.Dynamic;
            desc.BindFlags      = usage;
            desc.CPUAccessFlags = CpuAccessFlags.Write;
            desc.uiSizeInBytes  = capacity;
            if (usage.HasFlag(BindFlags.ShaderResource))
            {
                desc.Mode = BufferMode.Structured;
                desc.ElementByteStride = 16;
            }
            using (var device = context.renderContext.device)
                buffer = device.CreateBuffer(ref desc, null, IntPtr.Zero, 0);

            this.capacity = capacity;
            if (null != m_resizedEvent)
            {
                foreach (var sub in m_resizedEvent)
                {
                    sub(this, capacity);
                }
            }
        }
Ejemplo n.º 3
0
 /// <summary>Construct the buffer</summary>
 public DynamicBuffer(Context context, BindFlags usage, int initialCapacity, int maxCapacity = 0)
 {
     if (RuntimeEnvironment.runningLinux && usage.HasFlag(BindFlags.UniformBuffer))
     {
         maxCapacity = Math.Min(maxCapacity, 64 * 1024);                     // That 64kb value is reported by GL_MAX_VERTEX_UNIFORM_VECTORS and GL_MAX_FRAGMENT_UNIFORM_VECTORS
     }
     maximumCapacity = maxCapacity;
     this.usage      = usage;
     this.context    = context;
     initialCapacity = Math.Min(initialCapacity, 1024 * 2);
     resize(initialCapacity.nextPowerOf2());
 }
Ejemplo n.º 4
0
        void CreateViews(string name, BindFlags flags, SlimDX.Direct3D11.Resource resource)
        {
            if (flags.HasFlag(BindFlags.RenderTarget))
            {
                var view = new RenderTargetView(m_D3dDevice, resource);
                m_RTVList.Add(name, view);
            }

            if (flags.HasFlag(BindFlags.DepthStencil))
            {
                var view = new DepthStencilView(m_D3dDevice, resource);
                m_DSVList.Add(name, view);
            }

            if (flags.HasFlag(BindFlags.ShaderResource))
            {
                var view = new ShaderResourceView(m_D3dDevice, resource);
                m_SRVList.Add(name, view);
            }

            if (flags.HasFlag(BindFlags.UnorderedAccess))
            {
                var view = new UnorderedAccessView(m_D3dDevice, resource);
                m_UAVList.Add(name, view);
            }
        }
Ejemplo n.º 5
0
 private void LoadArraySlices(BindFlags bindFlags)
 {
     LoadArraySlices(bindFlags.HasFlag(BindFlags.RenderTarget), bindFlags.HasFlag(BindFlags.ShaderResource),
                     bindFlags.HasFlag(BindFlags.DepthStencil));
 }