示例#1
0
        public static Material GetMaterial(string name)
        {
            if (gl == null)
                throw new InvalidOperationException("MaterialManager not initialized");

            if (!materials.ContainsKey(name))
            {
                if (! Materials.ContainsKey(name))
                    throw new KeyNotFoundException("no material with that name found");

                var spec = Materials[name];

                Material m = new Material(gl, name);
                if (spec.Item1 != null) m.AddShader(ShaderManager.GetVertexShader(spec.Item1));
                if (spec.Item2 != null) m.AddShader(ShaderManager.GetGeometryShader(spec.Item2));
                if (spec.Item3 != null) m.AddShader(ShaderManager.GetFragmentShader(spec.Item3));
                m.Link();

                materials[name] = m;
            }

            return materials[name];
        }
示例#2
0
 public PhysicalEntity(Mesh mesh, Material material, CoordinateSystem coordinateSystem=null, string name="")
     : base(coordinateSystem, name)
 {
     Mesh = mesh;
     Material = material;
 }