public void UseShader() { GL.UseProgram(ProgramID); GL.EnableVertexAttribArray(__Displacement); GL.EnableVertexAttribArray(__Normal); GL.EnableVertexAttribArray(__Vertex); }
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(); }
public void PassUniforms() { GL.Uniform3(__LightDir, uniform_LightDir); GL.UniformMatrix4(__MVP, TransposeMatrix, ref uniform_MVP); GL.Uniform1(__MaxDisplacement, uniform_MaxDisplacement); }