private void LoadFromMemory(ShaderSourceMemory sources) { vertexShaderId = GL.CreateShader(ShaderType.VertexShader); fragmentShaderId = GL.CreateShader(ShaderType.FragmentShader); CompileShader(sources.VertexSource, vertexShaderId); CompileShader(sources.FragmentSource, fragmentShaderId); programId = GL.CreateProgram(); GL.AttachShader(programId, vertexShaderId); GL.AttachShader(programId, fragmentShaderId); GL.LinkProgram(programId); int linkResult; GL.GetProgram(programId, GetProgramParameterName.LinkStatus, out linkResult); if (linkResult != 1) { string infoLog = GL.GetProgramInfoLog(programId); Trace.TraceError(string.Format("Shader linker error: {0}", infoLog)); throw new Exception("Shader linker error: " + infoLog); } else { Trace.TraceInformation("Shader successfully loaded."); } }
public Shader(ShaderSourceMemory sources) { LoadFromMemory(sources); }