~linaro-graphics-wg/compiz-plugins-main/oneiric-gles2

« back to all changes in this revision

Viewing changes to expo/src/glow.cpp

  • Committer: Alexandros Frantzis
  • Date: 2012-01-17 10:16:39 UTC
  • Revision ID: alexandros.frantzis@linaro.org-20120117101639-1cd41pgi1bxfjsw2
expo: Improve glow effect rendering

Still not completely fixed. Needs more work.

Show diffs side-by-side

added added

removed removed

Lines of Context:
47
47
                       const CompRegion          &paintRegion,
48
48
                       unsigned int               mask)
49
49
{
50
 
    CompRegion reg;
51
 
    int    i;
 
50
    CompRegion      reg;
 
51
    int             i;
 
52
    GLushort        colorData[4];
 
53
    const GLushort *selColorData = ExpoScreen::get (screen)->optionGetSelectedColor ();
 
54
    float           alpha = (float) selColorData[3] / 65535.0f;
 
55
 
 
56
    /* Premultiply color */
 
57
    colorData[0] = selColorData[0] * alpha;
 
58
    colorData[1] = selColorData[1] * alpha;
 
59
    colorData[2] = selColorData[2] * alpha;
 
60
    colorData[3] = selColorData[3];
 
61
 
 
62
    gWindow->vertexBuffer ()->begin ();
52
63
 
53
64
    /* There are 8 glow parts of the glow texture which we wish to paint
54
65
     * separately with different transformations
62
73
            reg.boundingRect ().y1 () < reg.boundingRect ().y2 ())
63
74
        {
64
75
            GLTexture::MatrixList matl;
65
 
            GLushort             *colorData = (GLushort*) calloc (4, sizeof (GLushort));
66
76
            reg = CompRegion (reg.boundingRect ().x1 (),
67
77
                              reg.boundingRect ().y1 (),
68
78
                              reg.boundingRect ().width (),
69
79
                              reg.boundingRect ().height ());
70
80
 
71
81
            matl.push_back (mGlowQuads[i].mMatrix);
72
 
            gWindow->vertexBuffer ()->begin ();
73
 
            colorData = ExpoScreen::get (screen)->optionGetSelectedColor ();
74
 
            colorData[0] *= colorData[3];
75
 
            colorData[1] *= colorData[3];
76
 
            colorData[2] *= colorData[3];
77
 
            gWindow->vertexBuffer ()->addColors (1, colorData);
 
82
            /* Add color data for all 6 vertices of the quad */
 
83
            for (int n = 0; n < 6; n++)
 
84
                gWindow->vertexBuffer ()->addColors (1, colorData);
78
85
            gWindow->glAddGeometry (matl, reg, paintRegion);
79
 
            gWindow->vertexBuffer ()->end ();
80
86
        }
81
87
    }
82
88
 
 
89
    gWindow->vertexBuffer ()->end ();
 
90
 
83
91
    //GLScreen::get (screen)->setTexEnvMode (GL_MODULATE);
84
92
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
85
93