wined3d: Implemented fallback for separate stencil function in
WINED3DRS_CCW_STENCILFUNC
Vitaly Budovski
vbudovsk at cs.rmit.edu.au
Sat Mar 4 00:50:55 CST 2006
wined3d: Implemented fallback for separate stencil function in
WINED3DRS_CCW_STENCILFUNC
---
dlls/wined3d/device.c | 21 ++++++++++++++++++---
1 files changed, 18 insertions(+), 3 deletions(-)
-------------- next part --------------
982202c6ab7ec6ca45a4273ec61c66b04b1c9f60
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 0bc30f4..124b8bf 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -3816,9 +3816,24 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRen
if(!This->stateBlock->renderState[WINED3DRS_TWOSIDEDSTENCILMODE]) {
if(GL_EXTCALL(glStencilFuncSeparate)) {
GL_EXTCALL(glStencilFuncSeparate(GL_BACK, func, ref, mask));
- checkGLcall("glStencilOpSeparate(GL_BACK,...)");
- } else
- WARN("Unsupported in local OpenGL implementation: glStencilFuncSeparate\n");
+ checkGLcall("glStencilFuncSeparate(GL_BACK,...)");
+ }
+ 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(...)");
--
1.0.4
More information about the wine-patches
mailing list