The fastest way is certainly drawing one big quad covering the whole screen, with a tiled 2x2 texture.
After you’ve drawn everything setup an orthognal projection like so:
gl.matrixMode(GL.PROJECTION);
gl.loadIdentity();
glu.ortho2D(0, width_, height_, 0);
gl.matrixMode(GL.MODELVIEW);
gl.loadIdentity();
Now you can use 2d coordinates, and 1 coordinate increment corresponds to 1 pixel exactly. Whenever you want to draw anything in ‘screen’ space you should setup your matrices like the above, and then you can just draw as you would in 2d.
Now setup your 2x2 texture which looks like:
XX
00
Where you use color/alpha as appropriate for your texture blending mode.
Then do:
gl.begin(GL.QUADS);
gl.texCoord2f(0, 0);
gl.vertex2i(left, top);
gl.texCoord2f(0, (top-bottom)/2);
gl.vertex2i(left, bottom);
gl.texCoord2f(1, (top-bottom)/2);
gl.vertex2i(right, bottom);
gl.texCoord2f(1, 0);
gl.vertex2i(right, top);
gl.end();
The key here is that you wrap the 2 pixels horizontally across the whole quad, and the 2 pixels vertically you repeat (top-bottom)/2 times down the whole quad.
Just tried this and it works fine.