text-freetype2: Support linear SRGB
parent
a6fc46156d
commit
015ed39923
|
@ -67,6 +67,11 @@ void draw_uv_vbuffer(gs_vertbuffer_t *vbuf, gs_texture_t *tex,
|
|||
if (vbuf == NULL || tex == NULL)
|
||||
return;
|
||||
|
||||
const bool linear_srgb = gs_get_linear_srgb();
|
||||
|
||||
const bool previous = gs_framebuffer_srgb_enabled();
|
||||
gs_enable_framebuffer_srgb(linear_srgb);
|
||||
|
||||
gs_vertexbuffer_flush(vbuf);
|
||||
gs_load_vertexbuffer(vbuf);
|
||||
gs_load_indexbuffer(NULL);
|
||||
|
@ -75,7 +80,10 @@ void draw_uv_vbuffer(gs_vertbuffer_t *vbuf, gs_texture_t *tex,
|
|||
|
||||
for (size_t i = 0; i < passes; i++) {
|
||||
if (gs_technique_begin_pass(tech, i)) {
|
||||
gs_effect_set_texture(image, texture);
|
||||
if (linear_srgb)
|
||||
gs_effect_set_texture_srgb(image, texture);
|
||||
else
|
||||
gs_effect_set_texture(image, texture);
|
||||
|
||||
gs_draw(GS_TRIS, 0, num_verts);
|
||||
|
||||
|
@ -84,4 +92,6 @@ void draw_uv_vbuffer(gs_vertbuffer_t *vbuf, gs_texture_t *tex,
|
|||
}
|
||||
|
||||
gs_technique_end(tech);
|
||||
|
||||
gs_enable_framebuffer_srgb(previous);
|
||||
}
|
||||
|
|
|
@ -247,6 +247,8 @@ static void ft2_source_render(void *data, gs_effect_t *effect)
|
|||
if (srcdata->text == NULL || *srcdata->text == 0)
|
||||
return;
|
||||
|
||||
const bool previous = gs_set_linear_srgb(true);
|
||||
|
||||
gs_reset_blend_state();
|
||||
if (srcdata->outline_text)
|
||||
draw_outlines(srcdata);
|
||||
|
@ -256,6 +258,8 @@ static void ft2_source_render(void *data, gs_effect_t *effect)
|
|||
draw_uv_vbuffer(srcdata->vbuf, srcdata->tex, srcdata->draw_effect,
|
||||
(uint32_t)wcslen(srcdata->text) * 6);
|
||||
|
||||
gs_set_linear_srgb(previous);
|
||||
|
||||
UNUSED_PARAMETER(effect);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue