private ProgramViewModel(Program program)
 {
     Program = program;
     shadersByStage = new Dictionary<ProgramStage, ShaderViewModel>();
     AttachedShaders = new ObservableCollection<ShaderViewModel>();
     program.LinkageValidityChanged += onLinkageValidityChanged;
 }
        public static void ReadProject(Stream inputStream, out Shader[] shaders, out Program[] programs)
        {
            int numberShaders = readInt(inputStream);
            var idToShaderMap = new Dictionary<uint, Shader>(numberShaders);
            shaders = new Shader[numberShaders];
            for (uint shaderId = 0; shaderId < numberShaders; ++shaderId)
            {
            var shader = new Shader((ProgramStage) readUint(inputStream));
            shader.Name = readString(inputStream);
            shader.Source = readString(inputStream);

            shaders[shaderId] = shader;
            idToShaderMap[shaderId] = shader;
            }

            int numberPrograms = readInt(inputStream);
            programs = new Program[numberPrograms];
            for (uint i = 0; i < numberPrograms; ++i)
            {
            Program program = new Program();
            program.Name = readString(inputStream);
            var attachedShaderCount = readInt(inputStream);
            for (uint j = 0; j < attachedShaderCount; ++j)
            {
                var shaderId = readUint(inputStream);
                var shader = idToShaderMap[shaderId];
                program.AttachShader(shader);
            }
            programs[i] = program;
            }
        }
        public ProgramViewModel(
        Program program, IDictionary<Shader, ShaderViewModel> shaderViewModelsByShader)
            : this(program)
        {
            foreach (var attachedShader in program.ShadersByStage.Values)
            {
            var shaderViewModel = shaderViewModelsByShader[attachedShader];

            shadersByStage.Add(attachedShader.Stage, shaderViewModel);
            AttachedShaders.Add(shaderViewModel);
            }
        }
Beispiel #4
0
 public void DetachFromProgram(Program program)
 {
     program.DetachShader(Shader);
 }
 private void onLinkageValidityChanged(
 Program sender, Validity oldValidity, Validity newValidity)
 {
     OnPropertyChanged("LinkageValidity");
     OnPropertyChanged("LinkError");
 }