[SDL] Alpha-blending with OpenGL in SDL (multiple textures)

Stephen Anthony stephena at roadrunner.nf.net
Sun Nov 2 12:40:00 PST 2003


I've been trying for the past day or so to get alpha-blending working 
with textures.  The situation is as follows:

I have a main texture that is updated and sent to the SDL window each 
frame.  I'd like to use textured fonts, and as such, I've created a 
font texture holding 256 glyphs.  So when I draw fonts, I use 
glTexSubImage2D to cut out the appropriate font, and draw it over the 
texture shown onscreen.

My problem is with alpha-blending.  I want the current glyph (8x8 
pixels) to be drawn, but only the parts that make up the foreground of 
the glyph.  So I assumed that I'd set the foreground color to 
0x808080FF (indicated a light grey with full opacity) and the 
background to 0x0 (indicating full transparency).

It doesn't seem to be working out.  The following is part of the code:

  glEnable(GL_BLEND);
  glEnable(GL_TEXTURE_2D);
  glBegin(GL_QUADS);
    glTexCoord2f(0.0, 0.0); glVertex2i(xorig,   yorig  );
    glTexCoord2f(1.0, 0.0); glVertex2i(xorig+8, yorig  );
    glTexCoord2f(0.0, 1.0); glVertex2i(xorig+8, yorig+8);
    glTexCoord2f(1.0, 1.0); glVertex2i(xorig,   yorig+8);
  glEnd();

When I do this, it never seems to use the colors in the glyph texture, 
but uses some other color.  It seems that glEnable(GL_BLEND) turns on 
alpha-blending for the whole texture, but it doesn't use the alpha 
setting of each pixel in the texture.

I'm pretty sure this has something to do with glBlendFunc(), but I'm not 
having much success understanding that either.

Any help is greatly appreciated, because I've lost enough hair over 
this.

Steve





More information about the SDL mailing list