summaryrefslogtreecommitdiffstats
path: root/libvo/vo_direct3d.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2012-10-05 20:37:16 +0200
committerwm4 <wm4@nowhere>2012-10-16 07:26:32 +0200
commit44c62a685222f2b018a480246c2946d3e3e7529c (patch)
tree0c603432a889a4c6c549d8ee0f5cb5222586b7a0 /libvo/vo_direct3d.c
parent3ad918bbc62449759bbf97f6a809ebdde27ad59e (diff)
downloadmpv-44c62a685222f2b018a480246c2946d3e3e7529c.tar.bz2
mpv-44c62a685222f2b018a480246c2946d3e3e7529c.tar.xz
sub: switch to premultiplied alpha
Fixes problems with ugly borders. Note that at least in the DVD sub case, we could have just set all transparent pixels to black to solve this. vo_direct3d.c change untested, because mingw is a miserable pile of crap.
Diffstat (limited to 'libvo/vo_direct3d.c')
-rw-r--r--libvo/vo_direct3d.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/libvo/vo_direct3d.c b/libvo/vo_direct3d.c
index 4f16c6a6b1..2b8f3429e4 100644
--- a/libvo/vo_direct3d.c
+++ b/libvo/vo_direct3d.c
@@ -2049,6 +2049,9 @@ static void draw_osd(d3d_priv *priv, struct sub_bitmaps *imgs)
IDirect3DDevice9_SetTextureStageState(priv->d3d_device, 0,
D3DTSS_ALPHAOP, D3DTOP_MODULATE);
+ } else {
+ IDirect3DDevice9_SetRenderState(priv->d3d_device, D3DRS_SRCBLEND,
+ D3DBLEND_ONE);
}
IDirect3DDevice9_SetFVF(priv->d3d_device, D3DFVF_EOSD_VERTEX);
@@ -2060,6 +2063,8 @@ static void draw_osd(d3d_priv *priv, struct sub_bitmaps *imgs)
D3DTSS_COLORARG1, D3DTA_TEXTURE);
IDirect3DDevice9_SetTextureStageState(priv->d3d_device, 0,
D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
+ IDirect3DDevice9_SetRenderState(priv->d3d_device,
+ D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
IDirect3DDevice9_SetTexture(priv->d3d_device, 0, NULL);