2 Texture && PRVShell

// 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調用到應用程序.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章