wined3d: Fixed WINED3DRS_POINTSPRITEENABLE

Vitaly Budovski vbudovsk at cs.rmit.edu.au
Tue Jan 31 19:25:55 CST 2006


wined3d: Fixed WINED3DRS_POINTSPRITEENABLE

---

 dlls/wined3d/device.c |   43 ++++++++++++++++++++++---------------------
 1 files changed, 22 insertions(+), 21 deletions(-)
-------------- next part --------------
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index ab80493..fb5a065 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -3576,29 +3576,30 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRen
         return D3DERR_INVALIDCALL;
       }
     case WINED3DRS_POINTSPRITEENABLE         :
+    {
         /* TODO: NV_POINT_SPRITE */
-        if (GL_SUPPORT(ARB_POINT_SPRITE)) {
-            if (Value != FALSE) {
-                /* Doesn't work with GL_POINT_SMOOTH on on my ATI 9600, but then ATI drivers are buggered! */
-                glDisable(GL_POINT_SMOOTH);
-        /* Centre the texture on the vertex */
-                VTRACE("glTexEnvf( GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE)\n");
-                glTexEnvf( GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE);
-        
-                VTRACE("glTexEnvf( GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE)\n");
-                glTexEnvf( GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE);
-                checkGLcall("glTexEnvf(...)");
-                VTRACE("glEnable( GL_POINT_SPRITE_ARB )\n");
-                glEnable( GL_POINT_SPRITE_ARB );
-                checkGLcall("glEnable(...)");
-            } else {
-                VTRACE("glDisable( GL_POINT_SPRITE_ARB )\n");
-                glDisable( GL_POINT_SPRITE_ARB );
-                        checkGLcall("glEnable(...)");
-            }
+        if (!GL_SUPPORT(ARB_POINT_SPRITE)) {
+            TRACE("Point sprites not supported\n");
+            break;
         }
-    break;
-        /* Unhandled yet...! */
+
+        /*
+         * Point sprites are always enabled. Value controls texture coordinate
+         * replacement mode. Must be set true for point sprites to use
+         * textures.
+         */
+        glEnable(GL_POINT_SPRITE_ARB);
+        checkGLcall("glEnable(GL_POINT_SPRITE_ARB)");
+
+        if (Value) {
+            glTexEnvf(GL_POINT_SPRITE, GL_COORD_REPLACE, TRUE);
+            checkGLcall("glTexEnvf(GL_POINT_SPRITE, GL_COORD_REPLACE, TRUE)");
+        } else {
+            glTexEnvf(GL_POINT_SPRITE, GL_COORD_REPLACE, FALSE);
+            checkGLcall("glTexEnvf(GL_POINT_SPRITE, GL_COORD_REPLACE, FALSE)");
+        }
+        break;
+    }
     case WINED3DRS_EDGEANTIALIAS             :
     case WINED3DRS_WRAP0                     :
     case WINED3DRS_WRAP1                     :
-- 
1.0.4


More information about the wine-patches mailing list