diff options
author | Jinghua Luo <sunmoon1997@gmail.com> | 2007-02-04 20:24:18 +0800 |
---|---|---|
committer | Jinghua Luo <sunmoon1997@gmail.com> | 2007-02-04 20:24:18 +0800 |
commit | d5359386655a6c532026ebf5f18c39ad99f346f3 (patch) | |
tree | b9a3b3331dafe7f19a2c94893b737c159cbcc99b | |
parent | f64cef8cbd1c9f057c65803d7eeb4f1d46eb3333 (diff) |
opengl: fix glyph align and texture coords.
-rw-r--r-- | src/sdl-freetype-opengl.c | 13 |
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; } |