turned out to be slower?
This commit is contained in:
parent
7ca9afc751
commit
46d5f137a5
Binary file not shown.
Binary file not shown.
@ -404,11 +404,6 @@ draw_string_internal(float x, float y, const char *string, texture_font_t *fnt,
|
|||||||
if (len == 0)
|
if (len == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
GLuint indices[6 * len];
|
|
||||||
struct vertex_main vertices[4 * len];
|
|
||||||
|
|
||||||
GLuint idx = program_next_index();
|
|
||||||
|
|
||||||
for (size_t i = 0; i < len; ++i)
|
for (size_t i = 0; i < len; ++i)
|
||||||
{
|
{
|
||||||
texture_glyph_t *glyph = texture_font_find_glyph(fnt, &string[i]);
|
texture_glyph_t *glyph = texture_font_find_glyph(fnt, &string[i]);
|
||||||
@ -416,6 +411,8 @@ draw_string_internal(float x, float y, const char *string, texture_font_t *fnt,
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
GLuint indices[6];
|
||||||
|
struct vertex_main vertices[4];
|
||||||
if (i > 0)
|
if (i > 0)
|
||||||
{
|
{
|
||||||
x += texture_glyph_get_kerning(glyph, &string[i - 1]);
|
x += texture_glyph_get_kerning(glyph, &string[i - 1]);
|
||||||
@ -430,25 +427,24 @@ draw_string_internal(float x, float y, const char *string, texture_font_t *fnt,
|
|||||||
float s1 = glyph->s1;
|
float s1 = glyph->s1;
|
||||||
float t1 = glyph->t1;
|
float t1 = glyph->t1;
|
||||||
|
|
||||||
indices[i * 6 + 0] = idx;
|
indices[0] = 0;
|
||||||
indices[i * 6 + 1] = idx + 1;
|
indices[1] = 1;
|
||||||
indices[i * 6 + 2] = idx + 2;
|
indices[2] = 2;
|
||||||
indices[i * 6 + 3] = idx + 2;
|
indices[3] = 2;
|
||||||
indices[i * 6 + 4] = idx + 3;
|
indices[4] = 3;
|
||||||
indices[i * 6 + 5] = idx;
|
indices[5] = 0;
|
||||||
idx += 4;
|
|
||||||
|
|
||||||
vertices[i * 4 + 0] = (struct vertex_main){ (vec2){ x0, y0 }, (vec2){ s0, t0 }, color, DRAW_MODE_TEXTURED };
|
vertices[0] = (struct vertex_main){ (vec2){ x0, y0 }, (vec2){ s0, t0 }, color, DRAW_MODE_FREETYPE };
|
||||||
vertices[i * 4 + 1] = (struct vertex_main){ (vec2){ x0, y1 }, (vec2){ s0, t1 }, color, DRAW_MODE_TEXTURED };
|
vertices[1] = (struct vertex_main){ (vec2){ x0, y1 }, (vec2){ s0, t1 }, color, DRAW_MODE_FREETYPE };
|
||||||
vertices[i * 4 + 2] = (struct vertex_main){ (vec2){ x1, y1 }, (vec2){ s1, t1 }, color, DRAW_MODE_TEXTURED };
|
vertices[2] = (struct vertex_main){ (vec2){ x1, y1 }, (vec2){ s1, t1 }, color, DRAW_MODE_FREETYPE };
|
||||||
vertices[i * 4 + 3] = (struct vertex_main){ (vec2){ x1, y0 }, (vec2){ s1, t0 }, color, DRAW_MODE_TEXTURED };
|
vertices[3] = (struct vertex_main){ (vec2){ x1, y0 }, (vec2){ s1, t0 }, color, DRAW_MODE_FREETYPE };
|
||||||
|
|
||||||
pen_x += glyph->advance_x;
|
pen_x += glyph->advance_x;
|
||||||
if (glyph->height > size_y)
|
if (glyph->height > size_y)
|
||||||
size_y = glyph->height;
|
size_y = glyph->height;
|
||||||
}
|
|
||||||
|
|
||||||
vertex_buffer_push_back(program.buffer, vertices, len * 4, indices, len * 6);
|
vertex_buffer_push_back(program.buffer, vertices, 4, indices, 6);
|
||||||
|
}
|
||||||
|
|
||||||
if (out_x)
|
if (out_x)
|
||||||
*out_x = pen_x - x;
|
*out_x = pen_x - x;
|
||||||
|
@ -67,7 +67,9 @@ const char *shader_ultimate_frag =
|
|||||||
" if (frag_DrawMode == 2)\n"
|
" if (frag_DrawMode == 2)\n"
|
||||||
" gl_FragColor = frag_Color * tex;\n"
|
" gl_FragColor = frag_Color * tex;\n"
|
||||||
" else if (frag_DrawMode == 3)\n"
|
" else if (frag_DrawMode == 3)\n"
|
||||||
" gl_FragColor = vec4(frag_Color.rgb, frag_Color.a * texture2D(texture, frag_TexCoord).r);\n"
|
" if (tex.r < 0.5) gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n"
|
||||||
|
" else\n"
|
||||||
|
" gl_FragColor = vec4(frag_Color.rgb, frag_Color.a * tex.r);\n"
|
||||||
" else\n"
|
" else\n"
|
||||||
" gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n"
|
" gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user