Exemple #1
0
 public void UseShader()
 {
     GL.UseProgram(ProgramID);
     GL.EnableVertexAttribArray(__Displacement);
     GL.EnableVertexAttribArray(__Normal);
     GL.EnableVertexAttribArray(__Vertex);
 }
Exemple #2
0
        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");
        }
Exemple #3
0
 public void Recompile()
 {
     GL.DeleteShader(ProgramID);
     ProgramID = 0;
     Compile();
 }
Exemple #4
0
 public void PassUniforms()
 {
     GL.Uniform3(__LightDir, uniform_LightDir);
     GL.UniformMatrix4(__MVP, TransposeMatrix, ref uniform_MVP);
     GL.Uniform1(__MaxDisplacement, uniform_MaxDisplacement);
 }