Drastically improve the font scaling quality (issue #321)

Note that it isn't perfect yet, but a lot better.
This commit is contained in:
Bart van Strien
2012-01-08 14:11:40 +01:00
parent 1509403ca7
commit 5fa0a4cfa3
+7 -6
View File
@@ -57,7 +57,8 @@ namespace opengl
void Font::createTexture() void Font::createTexture()
{ {
texture_x = texture_y = rowHeight = 0; texture_x = texture_y = 1;
rowHeight = 0;
GLuint t; GLuint t;
glGenTextures(1, &t); glGenTextures(1, &t);
textures.push_back(t); textures.push_back(t);
@@ -92,12 +93,12 @@ namespace opengl
} }
love::font::GlyphData *gd = rasterizer->getGlyphData(glyph); love::font::GlyphData *gd = rasterizer->getGlyphData(glyph);
g->spacing = gd->getAdvance(); g->spacing = gd->getAdvance();
int w = gd->getWidth(); int w = gd->getWidth()+1;
int h = gd->getHeight(); int h = gd->getHeight()+1;
if (texture_x + w > TEXTURE_WIDTH) if (texture_x + w > TEXTURE_WIDTH)
{ // out of space - new row! { // out of space - new row!
texture_x = 0; texture_x = 1;
texture_y += rowHeight; texture_y += rowHeight+1;
rowHeight = 0; rowHeight = 0;
} }
if (texture_y + h > TEXTURE_HEIGHT) if (texture_y + h > TEXTURE_HEIGHT)
@@ -106,7 +107,7 @@ namespace opengl
} }
GLuint t = textures.back(); GLuint t = textures.back();
glBindTexture(GL_TEXTURE_2D, t); glBindTexture(GL_TEXTURE_2D, t);
glTexSubImage2D(GL_TEXTURE_2D, 0, texture_x, texture_y, w, h, (type == FONT_TRUETYPE ? GL_LUMINANCE_ALPHA : GL_RGBA), GL_UNSIGNED_BYTE, gd->getData()); glTexSubImage2D(GL_TEXTURE_2D, 0, texture_x, texture_y, w-1, h-1, (type == FONT_TRUETYPE ? GL_LUMINANCE_ALPHA : GL_RGBA), GL_UNSIGNED_BYTE, gd->getData());
Quad::Viewport v; Quad::Viewport v;
v.x = (float) texture_x; v.x = (float) texture_x;