hi !
i am currently programming a kind of class for fonts to use with opengl … i load the font from a tga file with alpha channel (rgba) … i “put” this image as textures on my polygon … of course i do some calc to get the s and t coords for every char … but it doesn’t matter yet …
… those areas of the fontmap that should be blended are red … (255,0,0) … and those areas have full transparency (through the alpha channel) …
for testing i took the whole fontmap and put it on the poly … i did it the following way:
// first create and init the texobject glGenTextures(1, &TexName); glBindTexture(GL_TEXTURE_2D, TexName); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
/* . . . */ // enable blending glEnable(GL_BLEND); // set blendingfunc glBlendFunc(GL_SRC_ALPHA, GL_ONE); // enable texturing glEnable(GL_TEXTURE_2D); /* . . . */ // bind texture glBindTexture(GL_TEXTURE_2D, TexName); // draw a rectangle ( for testing with the whole font map ... glBegin(GL_POLYGON); glColor4d(1.0, 1.0, 1.0, 1.0); glTexCoord2d(0.0, 0.0); glVertex2d(x, y); glTexCoord2d(1.0, 0.0); glVertex2d(x+CX, y); glTexCoord2d(1.0, 1.0); glVertex2d(x+CX, y+CY); glTexCoord2d(0.0, 1.0); glVertex2d(x, y+CY); glEnd();
as you see i have used the gl_replace environment for the texture … i have read that this means that opengl uses the colorvalue of the texture directly … and i have used gl_nearest for filtering
ok now one picture of the result:
it looks good … as you can see there isn’t any artifact ore something …
… but if i use gl_linear as texture filter the following was the result:
as you can see some parts of the red background are blended with the white font … i think the reason is that opengl first smoothes the texture (cause of the filter) and that he blends … so i understand that there are those red artifacts … but how to solve ? …
is there anybody that knows how i can blend textures correctly or how i can make it better … any better ideas or solutions … you can also tell me some general thinks about blending textures that have nothing to do with fonts or stuff …
thanks !!!
[This message has been edited by Sebbi (edited 12-01-2001).]