D3D8 render state additions

Vitaly Budovski vbudovsk at cs.rmit.edu.au
Sun Jan 15 04:47:25 CST 2006


Implemented several render states for D3D8.

Changelog

    * Implemented D3DRS_EDGEANTIALIAS
    * Implemented D3DRS_POINTSPRITEENABLE
    * Implemented D3DRS_MULTISAMPLEANTIALIAS

-------------- next part --------------
Index: device.c
===================================================================
RCS file: /home/wine/wine/dlls/d3d8/device.c,v
retrieving revision 1.133
diff -u -r1.133 device.c
--- device.c	10 Nov 2005 12:14:59 -0000	1.133
+++ device.c	15 Jan 2006 10:29:08 -0000
@@ -3054,6 +3054,21 @@
 
         /* Unhandled yet...! */
     case D3DRS_EDGEANTIALIAS             :
+    {
+        if(Value) {
+            glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+            glEnable(GL_BLEND);
+            checkGLcall("glEnable GL_BLEND");
+            glEnable(GL_LINE_SMOOTH);
+            checkGLcall("glEnable Gl_LINE_SMOOTH");
+        } else {
+            glDisable(GL_BLEND);
+            checkGLcall("glDisable GL_BLEND");
+            glDisable(GL_LINE_SMOOTH);
+            checkGLcall("glDisable GL_LINE_SMOOTH");
+        }
+        break;
+    }
     case D3DRS_WRAP0                     :
     case D3DRS_WRAP1                     :
     case D3DRS_WRAP2                     :
@@ -3062,8 +3077,48 @@
     case D3DRS_WRAP5                     :
     case D3DRS_WRAP6                     :
     case D3DRS_WRAP7                     :
+    {
+        FIXME("(%p)->(%d,%ld) not handled yet\n", This, State, Value);
+        break;
+    }
     case D3DRS_POINTSPRITEENABLE         :
+    {
+        if(Value) {
+            if(GL_SUPPORT(GL_ARB_point_sprite)) {
+                glEnable(GL_POINT_SPRITE_ARB);
+                checkGLcall("glEnable GL_POINT_SPRITE_ARB");
+            } else {
+                TRACE("Point sprites cannot be enabled in this version of opengl\n");
+            }
+        } else {
+            if(GL_SUPPORT(GL_ARB_point_sprite)) {
+                glDisable(GL_POINT_SPRITE_ARB);
+                checkGLcall("glDisable GL_POINT_SPRITE_ARB");
+            } else {
+                TRACE("Point sprites cannot be disabled in this version of opengl\n");
+            }
+        }
+        break;
+    }
     case D3DRS_MULTISAMPLEANTIALIAS      :
+    {
+        if(Value) {
+            if(GL_SUPPORT(GL_ARB_multisample)) {
+                glEnable(GL_MULTISAMPLE_ARB);
+                checkGLcall("glEnable GL_MULTISAMPLE_ARB");
+            } else {
+                TRACE("Multisample antialiasing cannot be enabled in this version of opengl\n");
+            }
+        } else {
+            if(GL_SUPPORT(GL_ARB_multisample)) {
+                glDisable(GL_MULTISAMPLE_ARB);
+                checkGLcall("glDisable GL_MULTISAMPLE_ARB");
+            } else {
+                TRACE("Multisample antialiasing cannot be disabled in this version of opengl\n");
+            }
+        }
+        break;
+    }
     case D3DRS_MULTISAMPLEMASK           :
     case D3DRS_PATCHEDGESTYLE            :
     case D3DRS_PATCHSEGMENTS             :


More information about the wine-patches mailing list