提交 32358ba6 编写于 作者: J Jim

Merge pull request #518 from hwdro/TFT-A8

text-freetype2: Use GS_A8 type glyphs texture
......@@ -24,7 +24,8 @@ VertInOut VSDefault(VertInOut vert_in)
float4 PSDrawBare(VertInOut vert_in) : TARGET
{
return image.Sample(def_sampler, vert_in.uv) * vert_in.col;
vert_in.col.a *= image.Sample(def_sampler, vert_in.uv).a;
return vert_in.col;
}
technique Draw
......
......@@ -367,7 +367,7 @@ static void ft2_source_update(void *data, obs_data_t *settings)
bfree(srcdata->texbuf);
srcdata->texbuf = NULL;
}
srcdata->texbuf = bzalloc(texbuf_w * texbuf_h * 4);
srcdata->texbuf = bzalloc(texbuf_w * texbuf_h);
if (srcdata->font_face)
cache_standard_glyphs(srcdata);
......
......@@ -53,7 +53,7 @@ struct ft2_source {
FT_Face font_face;
uint32_t *texbuf;
uint8_t *texbuf;
gs_vertbuffer_t *vbuf;
gs_effect_t *draw_effect;
......
......@@ -241,7 +241,6 @@ void cache_glyphs(struct ft2_source *srcdata, wchar_t *cache_glyphs)
slot = srcdata->font_face->glyph;
uint32_t dx = srcdata->texbuf_x, dy = srcdata->texbuf_y;
uint8_t alpha;
int32_t cached_glyphs = 0;
size_t len = wcslen(cache_glyphs);
......@@ -278,11 +277,9 @@ void cache_glyphs(struct ft2_source *srcdata, wchar_t *cache_glyphs)
src_glyph->xadv = slot->advance.x >> 6;
for (uint32_t y = 0; y < g_h; y++) {
for (uint32_t x = 0; x < g_w; x++) {
alpha = slot->bitmap.buffer[glyph_pos];
for (uint32_t x = 0; x < g_w; x++)
srcdata->texbuf[buf_pos] =
0x00FFFFFF ^ ((uint32_t)alpha << 24);
}
slot->bitmap.buffer[glyph_pos];
}
dx += (g_w + 1);
......@@ -310,7 +307,7 @@ void cache_glyphs(struct ft2_source *srcdata, wchar_t *cache_glyphs)
}
srcdata->tex = gs_texture_create(texbuf_w, texbuf_h,
GS_RGBA, 1, (const uint8_t **)&srcdata->texbuf, 0);
GS_A8, 1, (const uint8_t **)&srcdata->texbuf, 0);
obs_leave_graphics();
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册