2 Texture && PRVShell

来源:互联网 发布:mac上用的无线鼠标 编辑:程序博客网 时间:2024/05/17 03:23

// Fragment and vertex shaders code
    const char* pszFragShader = "/
        uniform sampler2D sampler2d;/
        varying mediump vec2    myTexCoord;/
        void main (void)/
        {/
            gl_FragColor = texture2D(sampler2d,myTexCoord);/
        }";
    const char* pszVertShader = "/
        attribute highp vec4    myVertex;/
        attribute mediump vec4    myUV;/
        uniform mediump mat4    myPMVMatrix;/
        varying mediump vec2    myTexCoord;/
        void main(void)/
        {/
            gl_Position = myPMVMatrix * myVertex;/
            myTexCoord = myUV.st;/
        }";
       
       
       
        1. 顶点数据格式为pos + uv
        在link Program object之前需要绑定attribute

       
        // Create the shader program
    m_uiProgramObject = glCreateProgram();

    // Attach the fragment and vertex shaders to it
    glAttachShader(m_uiProgramObject, m_uiFragShader);
    glAttachShader(m_uiProgramObject, m_uiVertexShader);

    // Bind the custom vertex attribute "myVertex" to location VERTEX_ARRAY
    glBindAttribLocation(m_uiProgramObject, VERTEX_ARRAY, "myVertex");
    // Bind the custom vertex attribute "myUV" to location TEXCOORD_ARRAY
    glBindAttribLocation(m_uiProgramObject, TEXCOORD_ARRAY, "myUV");

    // Link the program
    glLinkProgram(m_uiProgramObject);
   
   2. 设置使用level 0的图片
    // Actually use the created program
    glUseProgram(m_uiProgramObject);

    // Sets the sampler2D variable to the first texture unit
    glUniform1i(glGetUniformLocation(m_uiProgramObject, "sampler2d"), 0);
   
    3. gen texture, gen vbo
   
    4. render loop:
        传matrix, pos, uv给shader
   
       
        about shell:
        PowerVR对跨平台进行的封装。
        入口程序在PVRShellOS.cpp里面,在windows下面是winmain,它会调用到PVRShellInit,这个是在PVRShellAPI.cpp中的.
        应用程序需要继承PVRShell,实现Init/Release App/view,和RenderScene,另外就是一个Shell的NewDemo方法。
        ShellOS会先New一个Shell,然后传递给ShellInit,进行初始化,之后将透过ShellInit中的API调用到应用程序.