Esempio n. 1
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");
        }
Esempio n. 2
0
 public void Recompile()
 {
     GL.DeleteShader(ProgramID);
     ProgramID = 0;
     Compile();
 }