private void OpenGLControl_OpenGLInitialized(object sender, EventArgs e) { OpenGL gl = this.openGLControl1.OpenGL; string fragmentShaderCode = null; using (StreamReader sr = new StreamReader(FRAGMENT_SHADER_PATH)) { fragmentShaderCode = sr.ReadToEnd(); } string vertexShaderCode = null; using (StreamReader sr = new StreamReader(VERTEX_SHADER_PATH)) { vertexShaderCode = sr.ReadToEnd(); } _prog = new SharpGL.Shaders.ShaderProgram(); _prog.Create(gl, vertexShaderCode, fragmentShaderCode, null); string geometryShaderCode = null; if (File.Exists(GEOMETRY_SHADER_PATH)) { using (StreamReader sr = new StreamReader(GEOMETRY_SHADER_PATH)) { geometryShaderCode = sr.ReadToEnd(); } Shader geometryShader = new Shader(); geometryShader.Create(gl, OpenGL.GL_GEOMETRY_SHADER, geometryShaderCode); gl.AttachShader(_prog.ShaderProgramObject, geometryShader.ShaderObject); } gl.LinkProgram(_prog.ShaderProgramObject); // Now that we've compiled and linked the shader, check it's link status.If it's not linked properly, we're // going to throw an exception. if (_prog.GetLinkStatus(gl) == false) { throw new SharpGL.Shaders.ShaderCompilationException(string.Format("Failed to link shader program with ID {0}.", _prog.ShaderProgramObject), _prog.GetInfoLog(gl)); } }
public void Initialise(OpenGL gl) { #region Load the main program. string fragmentShaderCode = null; using (StreamReader sr = new StreamReader(FRAGMENT_SHADER_PATH)) { fragmentShaderCode = sr.ReadToEnd(); } string vertexShaderCode = null; using (StreamReader sr = new StreamReader(VERTEX_SHADER_PATH)) { vertexShaderCode = sr.ReadToEnd(); } _prog = new SharpGL.Shaders.ShaderProgram(); _prog.Create(gl, vertexShaderCode, fragmentShaderCode, null); string geometryShaderCode = null; if (File.Exists(GEOMETRY_SHADER_PATH)) { using (StreamReader sr = new StreamReader(GEOMETRY_SHADER_PATH)) { geometryShaderCode = sr.ReadToEnd(); } Shader geometryShader = new Shader(); geometryShader.Create(gl, OpenGL.GL_GEOMETRY_SHADER, geometryShaderCode); gl.AttachShader(_prog.ShaderProgramObject, geometryShader.ShaderObject); } gl.LinkProgram(_prog.ShaderProgramObject); // Now that we've compiled and linked the shader, check it's link status.If it's not linked properly, we're // going to throw an exception. if (_prog.GetLinkStatus(gl) == false) { throw new SharpGL.Shaders.ShaderCompilationException(string.Format("Failed to link shader program with ID {0}.", _prog.ShaderProgramObject), _prog.GetInfoLog(gl)); } #endregion #region Load clear program. //string clearFragShaderCode = null; //using (StreamReader sr = new StreamReader(CLEAR_FRAGMENT_SHADER_PATH)) //{ // clearFragShaderCode = sr.ReadToEnd(); //} //string clearVertexShaderCode = null; //using (StreamReader sr = new StreamReader(CLEAR_VERTEX_SHADER_PATH)) //{ // clearVertexShaderCode = sr.ReadToEnd(); //} //_clearProg = new SharpGL.Shaders.ShaderProgram(); //_clearProg.Create(gl, clearVertexShaderCode, clearFragShaderCode, null); //gl.LinkProgram(_clearProg.ShaderProgramObject); //// Now that we've compiled and linked the shader, check it's link status. If it's not linked properly, we're //// going to throw an exception. //if (_clearProg.GetLinkStatus(gl) == false) //{ // throw new SharpGL.Shaders.ShaderCompilationException(string.Format("Failed to link the clear shader program with ID {0}.", _clearProg.ShaderProgramObject), _clearProg.GetInfoLog(gl)); //} //_clearRectangle = new float[] { -1.0f, -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f }; #endregion }