public static void CompileShader() { LoadShaders(); ProgramID = GL.CreateProgram(); int Vertex = GL.CreateShader(global::OpenTK.Graphics.OpenGL.ShaderType.VertexShader); GL.ShaderSource(Vertex, VertexSource); GL.CompileShader(Vertex); GL.AttachShader(ProgramID, Vertex); int Fragment = GL.CreateShader(global::OpenTK.Graphics.OpenGL.ShaderType.FragmentShader); GL.ShaderSource(Fragment, FragmentSource); GL.CompileShader(Fragment); GL.AttachShader(ProgramID, Fragment); GL.LinkProgram(ProgramID); global::System.Diagnostics.Debug.WriteLine(GL.GetProgramInfoLog(ProgramID)); GL.DetachShader(ProgramID, Vertex); GL.DeleteShader(Vertex); GL.DetachShader(ProgramID, Fragment); GL.DeleteShader(Fragment); __LightDir = GL.GetUniformLocation(ProgramID, "LightDir"); __MVP = GL.GetUniformLocation(ProgramID, "MVP"); __MaxDisplacement = GL.GetUniformLocation(ProgramID, "MaxDisplacement"); __Displacement = GL.GetAttribLocation(ProgramID, "Displacement"); __Normal = GL.GetAttribLocation(ProgramID, "Normal"); __Vertex = GL.GetAttribLocation(ProgramID, "Vertex"); }
public void Recompile() { GL.DeleteShader(ProgramID); ProgramID = 0; Compile(); }