Пример #1
0
        public UniformBinding <T> GetUniformBinding <T> (Material material, string uniformName)
            where T : struct
        {
            var effect = material.Effect;

            if (effect == null)
            {
                return(null);
            }

            var key = new UniformBindingKey(effect, uniformName, typeof(T));

            lock (UniformBindings) {
                IUniformBinding existing;
                if (UniformBindings.TryGetValue(key, out existing))
                {
                    return(existing.Cast <T>());
                }

                if (material.OwningThread != Thread.CurrentThread)
                {
                    throw new InvalidOperationException("Uniform bindings must be allocated on the thread that owns the material.");
                }

#if SDL2
                UniformBinding <T> result;
                throw new NotImplementedException("Create uniform binding for effect");
#else
                var result = UniformBinding <T> .TryCreate(effect, uniformName);
#endif
                UniformBindings.Add(key, result);
                return(result);
            }
        }
Пример #2
0
 public bool Equals(UniformBindingKey rhs)
 {
     return((Effect == rhs.Effect) &&
            (Type == rhs.Type) &&
            (UniformName == rhs.UniformName));
 }