public void SetValue <T>(string key, T value)
        {
            if (_uniforms.ContainsKey(key))
            {
                var uniform = _uniforms[key];
                if (typeof(T) != uniform.UniformType)
                {
                    throw new ArrayTypeMismatchException();
                }

                uniform.Value = value;
            }
            else
            {
                _uniforms[key] = new ShaderUniform <T>(key, value);
            }
        }
 public void Set <T>(string key, ShaderUniform <T> value)
 {
     _uniforms[key] = value;
 }