public override void Dispose()
        {
            foreach (var block in UniformBlocks.Values)
            {
                block.Dispose();
            }

            UniformBlocks.Clear();
        }
        public UniformBlock GetBlock(string name)
        {
            if (!UniformBlocks.ContainsKey(name))
            {
                UniformBlocks.Add(name, new UniformBlock());
            }

            UniformBlocks[name].Buffer.Clear();
            return(UniformBlocks[name]);
        }
        private UniformBlock GetBlock(string name, bool reset = true)
        {
            if (!UniformBlocks.ContainsKey(name))
            {
                UniformBlocks.Add(name, new UniformBlock());
            }

            if (reset)
            {
                UniformBlocks[name].Buffer.Clear();
            }
            return(UniformBlocks[name]);
        }