How to Flip Left/Right an qml Item in shader?



  • As asked above, the problem is that my fixed version shader (from Qt5.4.2 example called tweetsearch, which is up/down flip) does not work well for the second source item.

    my version just change some shader code:

    fragmentShader: "
            uniform lowp float qt_Opacity;
            uniform sampler2D sourceA;
            uniform sampler2D sourceB;
            uniform highp float delta;
            varying highp vec2 qt_TexCoord0;
            void main() {
    //                highp vec4 tex = vec4(qt_TexCoord0.x, qt_TexCoord0.y * 2.0,      qt_TexCoord0.x, (qt_TexCoord0.y-0.5) * 2.0);
    
                // TODO: How?
                highp vec4 tex = vec4(qt_TexCoord0.x * 8.0, qt_TexCoord0.y, (qt_TexCoord0.x + 1.0), (qt_TexCoord0.y-0.5) * 2.0);
    
                highp float shade = clamp(delta*2.0, 0.5, 1.0);
                highp vec4 col;
                if (qt_TexCoord0.x < 0.5) {
                    col = texture2D(sourceA, tex.xy) * (shade);
                } else {
                    col = texture2D(sourceB, tex.wz) * (1.5 - shade);
                    col.w = 0.50;
                }
                gl_FragColor = col * qt_Opacity;
            }
        "
        property real h: width
        vertexShader: "
        uniform highp float delta;
        uniform highp float factor;
        uniform highp float h;
        uniform highp mat4 qt_Matrix;
        attribute highp vec4 qt_Vertex;
        attribute highp vec2 qt_MultiTexCoord0;
        varying highp vec2 qt_TexCoord0;
        void main() {
            highp vec4 pos = qt_Vertex;
            if (qt_MultiTexCoord0.x == 0.0)
                pos.y += factor * (1. - delta) * (qt_MultiTexCoord0.y * -2.0 + 1.0);
            else if (qt_MultiTexCoord0.x == 1.0)
                pos.y += factor * (delta) * (qt_MultiTexCoord0.y * -2.0 + 1.0);
            else
                pos.x = delta * h;
            gl_Position = qt_Matrix * pos;
            qt_TexCoord0 = qt_MultiTexCoord0;
        }"
    

    Could anyone help me out? Thanks.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.