示例#1
0
        private void registerProgramForItsShaders(ReloadableRendererShader rendererShader)
        {
            foreach (var shader in rendererShader.Shaders)
            {
                if (!programsByShader.TryGetValue(shader, out var programs))
                {
                    programs = new List <ReloadableRendererShader>();
                    programsByShader.Add(shader, programs);
                }

                programs.Add(rendererShader);
            }
        }
示例#2
0
        public IRendererShader RegisterRendererShader(Action <RendererShaderBuilder> build, string name)
        {
            var builder = new RendererShaderBuilder(this);

            build(builder);

            throwIfShaderProgramNameAlreadyTaken(name);

            var program = ReloadableRendererShader.LoadFrom(builder.Shaders);

            programs.Add(name, program);
            registerProgramForItsShaders(program);

            return(program);
        }