示例#1
0
        protected bool BuildProgram(string vs, string fs)
        {
            //NOTE: during development,
            //new shader source may not recompile if you don't clear cache or disable cache feature
            //like...
            //EnableProgramBinaryCache = false;

            //---------------------
            if (!LoadCompiledShader())
            {
                if (!_shaderProgram.Build(vs, fs))
                {
                    return(false);
                }
                SaveCompiledShader();
            }

            //-----------------------
            a_position      = _shaderProgram.GetAttrV3f("a_position");
            a_texCoord      = _shaderProgram.GetAttrV2f("a_texCoord");
            u_matrix        = _shaderProgram.GetUniformMat4("u_mvpMatrix");
            u_orthov_offset = _shaderProgram.GetUniform2("u_ortho_offset");
            s_texture       = _shaderProgram.GetUniform1("s_texture");
            OnProgramBuilt();
            return(true);
        }
        //--------------------------------
        bool LoadShaders()
        {
            //--------------------------------------
            //create shader program
            shaderProgram = new MiniShaderProgram();
            //--------------------------------------

            string vs = @"        
                attribute vec3 a_position;
                attribute vec4 a_color;  

                uniform mat4 u_mvpMatrix;
                uniform vec4 u_solidColor;
                uniform int u_useSolidColor;              

                varying vec4 v_color;
                varying vec4 a_position_output;
                void main()
                {

                    a_position_output =  u_mvpMatrix* vec4(a_position[0],a_position[1],0,1);
                    gl_Position = a_position_output;
                    v_color=  vec4(1,0,0,1); 
                }
                ";
            //fragment source
            //            string fs = @"void main()
            //                {
            //                    gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
            //                }
            //            ";
            string fs = @"
                    precision mediump float;
                    varying vec4 v_color;  
                    varying vec4 a_position_output;
                    void main()
                    {
                        if(a_position_output[1]>0.5){
                            gl_FragColor = vec4(0,1,1,1);
                        }else{
                            gl_FragColor= vec4(0,1,0,1); 
                        }
                    }
                ";

            if (!shaderProgram.Build(vs, fs))
            {
                throw new NotSupportedException();
            }

            a_position = shaderProgram.GetAttrV3f("a_position");
            a_color    = shaderProgram.GetAttrV4f("a_color");

            u_matrix        = shaderProgram.GetUniformMat4("u_mvpMatrix");
            u_useSolidColor = shaderProgram.GetUniform1("u_useSolidColor");
            u_solidColor    = shaderProgram.GetUniform4("u_solidColor");


            return(true);
        }
 protected bool BuildProgram(string vs, string fs)
 {
     //---------------------
     if (!shaderProgram.Build(vs, fs))
     {
         return(false);
     }
     //-----------------------
     a_position = shaderProgram.GetAttrV3f("a_position");
     a_texCoord = shaderProgram.GetAttrV2f("a_texCoord");
     u_matrix   = shaderProgram.GetUniformMat4("u_mvpMatrix");
     s_texture  = shaderProgram.GetUniform1("s_texture");
     OnProgramBuilt();
     return(true);
 }
示例#4
0
        protected override void OnReadyForInitGLShaderProgram()
        {
            //----------------
            //vertex shader source
            string vs = @"        
            precision mediump float;
            attribute vec2 a_position;
            attribute vec3 a_color; 
            attribute vec2 a_texcoord;
            
            uniform mat4 u_mvpMatrix;
            uniform vec4 u_solidColor;
            uniform int u_useSolidColor;            

            varying vec4 v_color;
            varying vec2 v_texcoord;
             
            void main()
            {
                
                gl_Position = u_mvpMatrix* vec4(a_position[0],a_position[1],0.0,1.0);
                if(u_useSolidColor !=0)
                {
                    v_color= u_solidColor;                                       
                }
                else
                {
                    v_color = vec4(a_color,1.0);
                } 
                v_texcoord= a_texcoord;
            }
            ";
            //fragment source
            string fs = @"
                precision mediump float;
                varying vec4 v_color; 
                varying vec2 v_texcoord;                 
                void main()
                {       
                    
                    //gl_FragColor = vec4(1,v_texcoord.y,0,1);
                    gl_FragColor= v_color;
                }
            ";

            if (!shaderProgram.Build(vs, fs))
            {
                throw new NotSupportedException();
            }


            a_position      = shaderProgram.GetAttrV2f("a_position");
            a_color         = shaderProgram.GetAttrV3f("a_color");
            a_textureCoord  = shaderProgram.GetAttrV2f("a_texcoord");
            u_matrix        = shaderProgram.GetUniformMat4("u_mvpMatrix");
            u_useSolidColor = shaderProgram.GetUniform1("u_useSolidColor");
            u_solidColor    = shaderProgram.GetUniform4("u_solidColor");
            //--------------------------------------------------------------------------------
            GL.Enable(EnableCap.Blend);
            GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha);
            GL.ClearColor(1, 1, 1, 1);
            //setup viewport size
            int max = Math.Max(this.Width, this.Height);

            //square viewport
            GL.Viewport(0, 0, max, max);
            orthoView = MyMat4.ortho(0, max, 0, max, 0, 1);
            //--------------------------------------------------------------------------------

            //load image
        }