summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJinghua Luo <sunmoon1997@gmail.com>2007-02-04 20:24:18 +0800
committerJinghua Luo <sunmoon1997@gmail.com>2007-02-04 20:24:18 +0800
commitd5359386655a6c532026ebf5f18c39ad99f346f3 (patch)
treeb9a3b3331dafe7f19a2c94893b737c159cbcc99b
parentf64cef8cbd1c9f057c65803d7eeb4f1d46eb3333 (diff)
opengl: fix glyph align and texture coords.
-rw-r--r--src/sdl-freetype-opengl.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/sdl-freetype-opengl.c b/src/sdl-freetype-opengl.c
index 37d850f..52b9eb2 100644
--- a/src/sdl-freetype-opengl.c
+++ b/src/sdl-freetype-opengl.c
@@ -197,26 +197,25 @@ sdl_freetype_opengl_glyph_user_data_init (sdl_freetype_font_t * font,
area = user_data->area;
glPushClientAttrib (GL_CLIENT_PIXEL_STORE_BIT);
- glPixelStorei (GL_UNPACK_LSB_FIRST, GL_FALSE);
glPixelStorei (GL_UNPACK_ROW_LENGTH, 0);
- glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
+ glPixelStorei (GL_UNPACK_ALIGNMENT, 4);
glBindTexture (GL_TEXTURE_2D, opengl_render->texture);
switch (info->bitmap.pixel_mode) {
case FT_PIXEL_MODE_MONO:
glTexSubImage2D (GL_TEXTURE_2D, 0,
- area->x, area->y, pitch, bitmap->rows,
+ area->x, area->y, bitmap->width, bitmap->rows,
GL_ALPHA, GL_UNSIGNED_BYTE, data);
break;
case FT_PIXEL_MODE_GRAY:
glTexSubImage2D (GL_TEXTURE_2D, 0,
- area->x, area->y, bitmap->pitch, bitmap->rows,
+ area->x, area->y, bitmap->width, bitmap->rows,
GL_ALPHA, GL_UNSIGNED_BYTE, bitmap->buffer);
break;
case FT_PIXEL_MODE_LCD:
case FT_PIXEL_MODE_LCD_V:
glTexSubImage2D (GL_TEXTURE_2D, 0,
- area->x, area->y, bitmap->pitch >> 2, bitmap->rows,
+ area->x, area->y, bitmap->width, bitmap->rows,
GL_RGBA, GL_UNSIGNED_BYTE, bitmap->buffer);
break;
}
@@ -228,8 +227,8 @@ sdl_freetype_opengl_glyph_user_data_init (sdl_freetype_font_t * font,
user_data->uv[0].x = (float)area->x / opengl_render->width;
user_data->uv[0].y = (float)area->y / opengl_render->height;
- user_data->uv[1].x = (float)(area->x + area->width) / opengl_render->width;
- user_data->uv[1].y = (float)(area->y + area->height) / opengl_render->height;
+ user_data->uv[1].x = (float)(area->x + bitmap->width) / opengl_render->width;
+ user_data->uv[1].y = (float)(area->y + bitmap->rows) / opengl_render->height;
info->data = user_data;
return SDL_FREETYPE_ERR_OK;
}