[Bf-blender-cvs] [f0404c3382f] blender2.8: Get rid of last PRIM_QUAD usage, in blf_font.c/blf_glyph.c.

Bastien Montagne noreply at git.blender.org
Mon Apr 10 21:35:21 CEST 2017


Commit: f0404c3382f36554ed52b7765029c1b8dc6cacb3
Author: Bastien Montagne
Date:   Mon Apr 10 21:21:38 2017 +0200
Branches: blender2.8
https://developer.blender.org/rBf0404c3382f36554ed52b7765029c1b8dc6cacb3

Get rid of last PRIM_QUAD usage, in blf_font.c/blf_glyph.c.

===================================================================

M	source/blender/blenfont/intern/blf_font.c
M	source/blender/blenfont/intern/blf_glyph.c

===================================================================

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);
@@ -326,6 +327,15 @@ static void blf_texture_draw(const unsigned char color[4], float uv[2][2], float
 	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);




More information about the Bf-blender-cvs mailing list