András Kovács : wined3d: Implement BlendFactor renderstate.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Sep 7 07:12:18 CDT 2006


Module: wine
Branch: master
Commit: d1d5f4b6465d71d3ef1845fd5693a8fd64b8cb46
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=d1d5f4b6465d71d3ef1845fd5693a8fd64b8cb46

Author: András Kovács <andras at 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;
     }
 




More information about the wine-cvs mailing list