Bug in the freetype openGL tutorial

Started by
1 comment, last by chderigo 11 years, 11 months ago
I've just looked at the NeHe freetype tutorial. http://nehe.gamedev....n_opengl/24001/

It's a great tutorial, and I managed to get freetype fonts in my opengl game in no time at all :)

There's a small, but significant problem with the code though! The textures are created as luminance-alpha textures, which is good, but the mistake is that both the luminance _and_ the alpha are set to the value from the glyph bitmap.

This basically produces an image with premultiplied alpha, yet the alpha gets applied once more during rendering -- causing the edges of glyphs to become much more jaggy.
Simply changing the bitmap creation code from:


for(int j = 0; j <height ; j++) {
for(int i = 0; i < width; i++) {
expanded_data[2 * (i + j * width)] = expanded_data[2 * (i + j * width) + 1] =
(i >= bitmap.width || j >= bitmap.rows) ? 0 : bitmap.buffer[i + bitmap.width * j];
}
}


to: for(int j = 0; j <height ; j++) {
for(int i = 0; i < width; i++) {
expanded_data[2 * (i + j * width)] = 255;
expanded_data[2 * (i + j * width) + 1] =
(i >= bitmap.width || j >= bitmap.rows) ? 0 : bitmap.buffer[i + bitmap.width * j];
}
}

produces a softer, less jaggy image.
Advertisement
Thanks for the hint! I'll add a note to the tutorial.

Cheers
First of all: Thanks for this great tutorial, it really kicks ass...wub.png love it..
(http://nehe.gamedev.net/tutorial/freetype_fonts_in_opengl/24001/)

There's another bug within this code.
a memory leak is caused by the glyph not getting freed!

bugfix: add the line


FT_Done_Glyph(glyph);



to the bottom of the "make_dlist" function.

[color=#D1EDFF][font=monospace]

[background=rgb(15, 25, 42)]documentation for FT_Get_Glyph says:[/background][/font]

[color=#000000][font=Verdana, Geneva, Arial, Helvetica, serif][size=1]Note that the created [/font]FT_Glyph[color=#000000][font=Verdana, Geneva, Arial, Helvetica, serif][size=1] object must be released with [/font]FT_Done_Glyph[color=#000000][font=Verdana, Geneva, Arial, Helvetica, serif][size=1].[/font]

This topic is closed to new replies.

Advertisement