# HG changeset patch # User reimar # Date 1354308662 0 # Node ID 19c56dc40a5185253f7542897dc0f6184ba382a4 # Parent 4644c320daf49e5d590b9b21941e5683cd85678f Fix alpha for ASS subtitles. EOSD always needs to use MODULATE since the vertex colour might contain alpha. diff -r 4644c320daf4 -r 19c56dc40a51 libvo/vo_gl.c --- a/libvo/vo_gl.c Fri Nov 30 20:11:58 2012 +0000 +++ b/libvo/vo_gl.c Fri Nov 30 20:51:02 2012 +0000 @@ -824,14 +824,16 @@ mpglPushMatrix(); mpglLoadMatrixf(matrix); } - if (osd_color != 0xffffff) - mpglTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); mpglEnable(GL_BLEND); if (draw_eosd) { + mpglTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); mpglBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); mpglCallList(eosdDispList); + mpglTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); } if (draw_osd) { + if (osd_color != 0xffffff) + mpglTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); mpglColor4ub((osd_color >> 16) & 0xff, (osd_color >> 8) & 0xff, osd_color & 0xff, 0xff - (osd_color >> 24)); // draw OSD #ifndef FAST_OSD @@ -850,11 +852,11 @@ mpglBindTexture(gl_target, osdtex[i]); glDrawTex(c->x, c->y, c->w, c->h, 0, 0, c->w, c->h, c->sx, c->sy, using_tex_rect, 0, 0, 0); } + if (osd_color != 0xffffff) + mpglTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); } // set rendering parameters back to defaults mpglDisable(GL_BLEND); - if (osd_color != 0xffffff) - mpglTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); if (!scaled_osd) mpglPopMatrix(); mpglBindTexture(gl_target, 0);