public void Load(string vertexShaderName, string fragmentShaderName)
        {
            string vSource = vShaderSource;
            string fSource = fShaderSource;

            int vShader = GL.CreateShader(ShaderType.VertexShader);
            int fShader = GL.CreateShader(ShaderType.FragmentShader);

            GL.ShaderSource(vShader, vSource);
            GL.ShaderSource(fShader, fSource);
            // Compile shaders
            GL.CompileShader(vShader);
            GL.CompileShader(fShader);
            Debug.WriteLine(GL.GetShaderInfoLog(vShader));
            Debug.WriteLine(GL.GetShaderInfoLog(fShader));

            int program = GL.CreateProgram();

            // Link and attach shaders to program
            GL.AttachShader(program, vShader);
            GL.AttachShader(program, fShader);

            GL.LinkProgram(program);
            Debug.WriteLine(GL.GetProgramInfoLog(program));

            this.Program        = program;
            this.VertexShader   = vShader;
            this.FragmentShader = fShader;
            this._uniforms      = new UniformDictionary(Program);
        }
Пример #2
0
        public void Load()
        {
            string vSource = m_vShaderSource;
            string fSource = m_fShaderSource;

            int vShader = GL.CreateShader(ShaderType.VertexShader);
            int fShader = GL.CreateShader(ShaderType.FragmentShader);

            GL.ShaderSource(vShader, vSource);
            GL.ShaderSource(fShader, fSource);
            // Compile shaders
            GL.CompileShader(vShader);
            GL.CompileShader(fShader);
            Debug.WriteLine(GL.GetShaderInfoLog(vShader));
            Debug.WriteLine(GL.GetShaderInfoLog(fShader));

            int program = GL.CreateProgram();

            // Link and attach shaders to program
            GL.AttachShader(program, vShader);
            GL.AttachShader(program, fShader);

            GL.BindAttribLocation(program, 0, "in_screen_coords");
            GL.BindAttribLocation(program, 1, "in_uv");
            GL.BindAttribLocation(program, 2, "in_color");

            GL.LinkProgram(program);
            Debug.WriteLine(GL.GetProgramInfoLog(program));

            m_Program        = program;
            m_VertexShader   = vShader;
            m_FragmentShader = fShader;

            m_Uniforms = new UniformDictionary(m_Program);
        }
Пример #3
0
 public GLShader(int program, int vertexShader, int fragmentShader)
 {
     Program        = program;
     VertexShader   = vertexShader;
     FragmentShader = fragmentShader;
     Uniforms       = new UniformDictionary(program, GL.GetUniformLocation);
 }