protected int LinkShaderProgram(int vertexId, int fragmentId) { int programId = Gl.CreateProgram(); Gl.AttachShader(programId, vertexId); Gl.AttachShader(programId, fragmentId); Gl.LinkProgram(programId); Gl.GetProgram(programId, GetProgramParameterName.LinkStatus, out int success); if (success < 1) { string infoLog = null; Gl.GetProgram(programId, GetProgramParameterName.InfoLogLength, out int loglen); if (loglen > 0) { string log; Gl.GetProgramInfoLog(programId, loglen, out _, out log); infoLog = log; } throw new ShaderException(this, "Program Link failed.", infoLog); } //Gl.ValidateProgram(programId); //Gl.GetProgram(programId, ProgramProperty.ValidateStatus, out success); //if (success < 1) //{ // string infoLog = null; // Gl.GetProgram(programId, ProgramProperty.InfoLogLength, out int loglen); // if (loglen > 0) // { // StringBuilder log = new StringBuilder(loglen); // Gl.GetProgramInfoLog(programId, loglen, out _, log); // infoLog = log.ToString(); // } // throw new ShaderException(this, "Program Validation failed.", infoLog); //} return(programId); }