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); } }
public void DetachFromProgram(Program program) { program.DetachShader(Shader); }
private void onLinkageValidityChanged( Program sender, Validity oldValidity, Validity newValidity) { OnPropertyChanged("LinkageValidity"); OnPropertyChanged("LinkError"); }