From f0404c3382f36554ed52b7765029c1b8dc6cacb3 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 10 Apr 2017 21:21:38 +0200 Subject: Get rid of last PRIM_QUAD usage, in blf_font.c/blf_glyph.c. --- source/blender/blenfont/intern/blf_font.c | 14 ++++---------- source/blender/blenfont/intern/blf_glyph.c | 10 ++++++++++ 2 files changed, 14 insertions(+), 10 deletions(-) (limited to 'source/blender/blenfont') diff --git a/source/blender/blenfont/intern/blf_font.c b/source/blender/blenfont/intern/blf_font.c index 3a736473f57..4d7c180a488 100644 --- a/source/blender/blenfont/intern/blf_font.c +++ b/source/blender/blenfont/intern/blf_font.c @@ -188,7 +188,7 @@ static unsigned verts_needed(const FontBLF *font, const char *str, size_t len) quad_ct += 25; /* 5x5 kernel */ } - return length * quad_ct * 4; + return length * quad_ct * 6; } static void blf_font_draw_ex( @@ -206,8 +206,7 @@ static void blf_font_draw_ex( blf_font_ensure_ascii_table(font); -#ifdef WITH_GL_PROFILE_COMPAT - immBeginAtMost(PRIM_QUADS_XXX, verts_needed(font, str, len)); + immBeginAtMost(PRIM_TRIANGLES, verts_needed(font, str, len)); /* at most because some glyphs might be clipped & not drawn */ while ((i < len) && str[i]) { @@ -228,7 +227,6 @@ static void blf_font_draw_ex( } immEnd(); -#endif if (r_info) { r_info->lines = 1; @@ -255,8 +253,7 @@ static void blf_font_draw_ascii_ex( blf_font_ensure_ascii_table(font); -#ifdef WITH_GL_PROFILE_COMPAT - immBeginAtMost(PRIM_QUADS_XXX, verts_needed(font, str, len)); + immBeginAtMost(PRIM_TRIANGLES, verts_needed(font, str, len)); while ((c = *(str++)) && len--) { BLI_assert(c < 128); @@ -273,7 +270,6 @@ static void blf_font_draw_ascii_ex( } immEnd(); -#endif if (r_info) { r_info->lines = 1; @@ -297,8 +293,7 @@ int blf_font_draw_mono(FontBLF *font, const char *str, size_t len, int cwidth) blf_font_ensure_ascii_table(font); -#ifdef WITH_GL_PROFILE_COMPAT - immBeginAtMost(PRIM_QUADS_XXX, verts_needed(font, str, len)); + immBeginAtMost(PRIM_TRIANGLES, verts_needed(font, str, len)); while ((i < len) && str[i]) { BLF_UTF8_NEXT_FAST(font, g, str, i, c, glyph_ascii_table); @@ -320,7 +315,6 @@ int blf_font_draw_mono(FontBLF *font, const char *str, size_t len, int cwidth) } immEnd(); -#endif return columns; } diff --git a/source/blender/blenfont/intern/blf_glyph.c b/source/blender/blenfont/intern/blf_glyph.c index fa37f88d91f..b4d29b5d61e 100644 --- a/source/blender/blenfont/intern/blf_glyph.c +++ b/source/blender/blenfont/intern/blf_glyph.c @@ -317,6 +317,7 @@ void blf_glyph_free(GlyphBLF *g) static void blf_texture_draw(const unsigned char color[4], float uv[2][2], float dx, float y1, float dx1, float y2) { + /* First triangle. */ immAttrib2f(BLF_COORD_ID, uv[0][0], uv[0][1]); immSkipAttrib(BLF_COLOR_ID); /* skip color of most vertices */ immVertex2f(BLF_POS_ID, dx, y1); @@ -325,6 +326,15 @@ static void blf_texture_draw(const unsigned char color[4], float uv[2][2], float immSkipAttrib(BLF_COLOR_ID); immVertex2f(BLF_POS_ID, dx, y2); + immAttrib2f(BLF_COORD_ID, uv[1][0], uv[1][1]); + immAttrib4ubv(BLF_COLOR_ID, color); /* set color of provoking vertex */ + immVertex2f(BLF_POS_ID, dx1, y2); + + /* Second triangle. */ + immAttrib2f(BLF_COORD_ID, uv[0][0], uv[0][1]); + immSkipAttrib(BLF_COLOR_ID); /* skip color of most vertices */ + immVertex2f(BLF_POS_ID, dx, y1); + immAttrib2f(BLF_COORD_ID, uv[1][0], uv[1][1]); immSkipAttrib(BLF_COLOR_ID); immVertex2f(BLF_POS_ID, dx1, y2); -- cgit v1.2.3