// Note: We only support a single user uniform buffer per shader void CreateBuffers() { m_VSConstantBuffers = new D3D11.Buffer[m_VSUniformBuffers.Count + (m_VSUserUniformBuffer != null ? 1 : 0)]; foreach (ShaderUniformBufferDeclaration decl in m_VSUniformBuffers) { var desc = new D3D11.BufferDescription { SizeInBytes = decl.Size, Usage = D3D11.ResourceUsage.Dynamic, BindFlags = D3D11.BindFlags.ConstantBuffer, CpuAccessFlags = D3D11.CpuAccessFlags.Write }; m_VSConstantBuffers[decl.Register] = new D3D11.Buffer(Context.Instance.Dev, desc); } if (m_VSUserUniformBuffer != null) { ShaderUniformBufferDeclaration decl = m_VSUserUniformBuffer; var desc = new D3D11.BufferDescription { SizeInBytes = decl.Size, Usage = D3D11.ResourceUsage.Dynamic, BindFlags = D3D11.BindFlags.ConstantBuffer, CpuAccessFlags = D3D11.CpuAccessFlags.Write }; m_VSConstantBuffers[decl.Register] = new D3D11.Buffer(Context.Instance.Dev, desc); } m_PSConstantBuffers = new D3D11.Buffer[m_PSUniformBuffers.Count + (m_PSUserUniformBuffer != null ? 1 : 0)]; foreach (ShaderUniformBufferDeclaration decl in m_PSUniformBuffers) { var desc = new D3D11.BufferDescription { SizeInBytes = decl.Size, Usage = D3D11.ResourceUsage.Dynamic, BindFlags = D3D11.BindFlags.ConstantBuffer, CpuAccessFlags = D3D11.CpuAccessFlags.Write }; m_PSConstantBuffers[decl.Register] = new D3D11.Buffer(Context.Instance.Dev, desc); } if (m_PSUserUniformBuffer != null) { ShaderUniformBufferDeclaration decl = m_PSUserUniformBuffer; var desc = new D3D11.BufferDescription { SizeInBytes = decl.Size, Usage = D3D11.ResourceUsage.Dynamic, BindFlags = D3D11.BindFlags.ConstantBuffer, CpuAccessFlags = D3D11.CpuAccessFlags.Write }; m_PSConstantBuffers[decl.Register] = new D3D11.Buffer(Context.Instance.Dev, desc); } }
public VertexBuffer(BufferUsage usage = BufferUsage.STATIC) { m_Usage = usage; m_Desc = new D3D11.BufferDescription { Usage = (D3D11.ResourceUsage)m_Usage, BindFlags = D3D11.BindFlags.VertexBuffer, CpuAccessFlags = D3D11.CpuAccessFlags.Write }; }
public unsafe IndexBuffer(uint[] data) { Count = data.Length; var desc = new D3D11.BufferDescription { Usage = D3D11.ResourceUsage.Default, SizeInBytes = sizeof(uint) * Count, BindFlags = D3D11.BindFlags.IndexBuffer, CpuAccessFlags = D3D11.CpuAccessFlags.None, OptionFlags = D3D11.ResourceOptionFlags.None }; DataStream dataStream = new DataStream(desc.SizeInBytes, true, true); foreach (uint i in data) { dataStream.Write(i); } dataStream.Position = 0; m_Handle = new D3D11.Buffer(Context.Instance.Dev, dataStream, desc); }