示例#1
0
        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];
        }
示例#2
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;
		}
示例#3
0
        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];
        }
示例#4
0
 internal ProgramSubroutine(ProgramStage stage, string name, int index)
     : base(stage, name, index)
 {
 }
示例#5
0
 internal ProgramStageObject(ProgramStage stage, string name, int index)
     : base(stage.Program, name, index)
 {
     this.stage = stage;
 }
示例#6
0
 internal ProgramSubroutine(ProgramStage stage, string name, int index)
     : base(stage, name, index)
 {
 }
示例#7
0
 internal ProgramStageObject(ProgramStage stage, string name, int index)
     : base(stage.Program, name, index)
 {
     this.stage = stage;
 }