Module: wine Branch: refs/heads/master Commit: 6bf561b7ba1b1ae9ae22a1056c554ad8bce7f8bc URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=6bf561b7ba1b1ae9ae22a105...
Author: Vitaly Budovski vbudovsk@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(...)");