/// <summary> /// Creates a new, unloaded HighLevelGpuProgram instance. /// </summary> /// <remarks> /// This method creates a new program of the type specified as the second and third parameters. /// You will have to call further methods on the returned program in order to /// define the program fully before you can load it. /// </remarks> /// <param name="name">Name of the program to create.</param> /// <param name="language">HLSL language to use.</param> /// <param name="type">Type of program, i.e. vertex or fragment.</param> /// <returns>An unloaded instance of HighLevelGpuProgram.</returns> public HighLevelGpuProgram CreateProgram(string name, string language, GpuProgramType type) { // lookup the factory for the requested program language IHighLevelGpuProgramFactory factory = GetFactory(language); if (factory == null) { throw new Exception(string.Format("Could not find HighLevelGpuProgramManager that can compile programs of type '{0}'", language)); } // create the high level program using the factory HighLevelGpuProgram program = factory.Create(name, type); Add(program); return(program); }
/// <summary> /// Add a new factory object for high-level programs of a given language. /// </summary> /// <param name="factory"> /// The factory instance to register. /// </param> public void AddFactory(IHighLevelGpuProgramFactory factory) { factories.Add(factory.Language, factory); }