Ejemplo n.º 1
0
        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.");
            }
        }
Ejemplo n.º 2
0
 public Shader(ShaderSourceMemory sources)
 {
     LoadFromMemory(sources);
 }