Vitaly Budovski : wined3d: Implemented fallback for separate stencil function in WINED3DRS_CCW_STENCILFUNC .

Alexandre Julliard julliard at wine.codeweavers.com
Sat Mar 4 11:10:08 CST 2006


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

Author: Vitaly Budovski <vbudovsk at cs.rmit.edu.au>
Date:   Sat Mar  4 17:50:55 2006 +1100

wined3d: Implemented fallback for separate stencil function in WINED3DRS_CCW_STENCILFUNC.

---

 dlls/wined3d/device.c |   19 +++++++++++++++++--
 1 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 174f975..894a70a 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -3817,8 +3817,23 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRen
             if(GL_EXTCALL(glStencilFuncSeparate)) {
                 GL_EXTCALL(glStencilFuncSeparate(GL_BACK, func, ref, mask));
                 checkGLcall("glStencilFuncSeparate(GL_BACK,...)");
-            } else
-                WARN("Unsupported in local OpenGL implementation: glStencilFuncSeparate\n");
+            }
+            else if(GL_EXTCALL(glActiveStencilFaceEXT)) {
+                glEnable(GL_STENCIL_TEST_TWO_SIDE_EXT);
+                checkGLcall("glEnable(GL_STENCIL_TEST_TWO_SIDE_EXT)");
+                GL_EXTCALL(glActiveStencilFaceEXT(GL_BACK));
+                checkGLcall("glActiveStencilFaceEXT(GL_BACK)");
+                glStencilFunc(func, ref, mask);
+                checkGLcall("glStencilFunc(...)");
+            }
+            else if(GL_EXTCALL(glStencilFuncSeparateATI)) {
+                GL_EXTCALL(glStencilFuncSeparateATI(GL_BACK, func, ref, mask));
+                checkGLcall("glStencilFuncSeparateATI(GL_BACK,...)");
+            } else {
+                TRACE("Separate stencil function not supported on this version of opengl");
+                glStencilFunc(func, ref, mask);
+                checkGLcall("glStencilFunc(...)");
+            }
         } else {
             glStencilFunc(func, ref, mask);
             checkGLcall("glStencilFunc(...)");




More information about the wine-cvs mailing list