Module: wine Branch: master Commit: d1d5f4b6465d71d3ef1845fd5693a8fd64b8cb46 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=d1d5f4b6465d71d3ef1845fd...
Author: András Kovács andras@csevego.net Date: Fri Sep 1 23:05:55 2006 +0200
wined3d: Implement BlendFactor renderstate.
---
dlls/wined3d/device.c | 22 ++++++++++++++++++++-- 1 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index a20f2e0..be90664 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -3608,6 +3608,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl This->srcBlend = newVal; This->dstBlend = newVal; break; + case D3DBLEND_BLENDFACTOR : newVal = GL_CONSTANT_COLOR; break; + case D3DBLEND_INVBLENDFACTOR : newVal = GL_ONE_MINUS_CONSTANT_COLOR; break; default: FIXME("Unrecognized src/dest blend value %ld (%d)\n", Value, State); } @@ -4534,8 +4536,24 @@ static HRESULT WINAPI IWineD3DDeviceImpl
case WINED3DRS_BLENDFACTOR : { - if(0xFFFFFFFF != Value) - ERR("(%p)->(%s,%ld) not yet implemented. Missing of cap D3DPBLENDCAPS_BLENDFACTOR wasn't honored?\n", This, debug_d3drenderstate(State), Value); + float col[4]; + if (GL_SUPPORT(ARB_IMAGING)) { + + TRACE("Setting BlendFactor to %ld", Value); + + D3DCOLORTOGLFLOAT4(Value, col); + if (0xFFFFFFFF != Value) { + glEnable(GL_BLEND); + checkGLcall("glEnable(GL_BLEND)"); + } + else { + glDisable(GL_BLEND); + checkGLcall("glDisable(GL_BLEND)"); + } + glBlendColor (col[0],col[1],col[2],col[3]); + } else { + WARN("Unsupported in local OpenGL implementation: glBlendColor\n"); + } break; }