internal ProgramSubroutineUniform(ProgramStage stage, string name, int index) : base(stage, name, index) { int[] idList = new int[Get1i(ActiveSubroutineUniformParameter.NumCompatibleSubroutines)]; GL.GetActiveSubroutineUniform(Program.Id, ShaderType, index, ActiveSubroutineUniformParameter.CompatibleSubroutines, idList); Context.CheckError(); for (int idIndex = 0; idIndex < idList.Length; idIndex++) { compatible.Add(stage.Subroutines[idList[idIndex]]); } this.location = GL.GetSubroutineUniformLocation(Program.Id, ShaderType, Name); Context.CheckError(); stage.ids[location] = idList[0]; }
public Program() : base(AllocateId()) { shaders = new ProgramShaderCollection(this); ProgramStage[] stageList = new ProgramStage[] { new ProgramStage(this, ShaderStage.Compute), new ProgramStage(this, ShaderStage.Fragment), new ProgramStage(this, ShaderStage.Geometry), new ProgramStage(this, ShaderStage.TessellationControl), new ProgramStage(this, ShaderStage.TessellationEvaluation), new ProgramStage(this, ShaderStage.Vertex) }; stages = new ReadOnlyCollection<ProgramStage>(stageList); foreach (ProgramStage stage in stageList) stagesByShaderStage[stage.Stage] = stage; }
internal ProgramSubroutineUniform(ProgramStage stage, string name, int index) : base(stage, name, index) { int[] idList = new int[Get1i(ActiveSubroutineUniformParameter.NumCompatibleSubroutines)]; GL.GetActiveSubroutineUniform(Program.Id, ShaderType, index, ActiveSubroutineUniformParameter.CompatibleSubroutines, idList); Context.CheckError(); for (int idIndex = 0; idIndex < idList.Length; idIndex++) compatible.Add(stage.Subroutines[idList[idIndex]]); this.location = GL.GetSubroutineUniformLocation(Program.Id, ShaderType, Name); Context.CheckError(); stage.ids[location] = idList[0]; }
internal ProgramSubroutine(ProgramStage stage, string name, int index) : base(stage, name, index) { }
internal ProgramStageObject(ProgramStage stage, string name, int index) : base(stage.Program, name, index) { this.stage = stage; }