wined3d: Fixed some typos and prevented divide by 0

Vitaly Budovski vbudovsk at cs.rmit.edu.au
Sat Feb 25 03:50:27 CST 2006


wined3d: Fixed some typos and prevented divide by 0

---

 dlls/wined3d/device.c |   39 +++++++++++++++++++++------------------
 1 files changed, 21 insertions(+), 18 deletions(-)

-------------- next part --------------
baff356b9e1ba70fa85415b36b93f732b83021f9
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 04a2fe8..7379a73 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -3502,7 +3502,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRen
     {
         /*
          * POINTSCALEENABLE controls how point size value is treated. If set to
-         * true, the point size is scaled with repsect to height of viewport.
+         * true, the point size is scaled with respect to height of viewport.
          * When set to false point size is in pixels.
          *
          * http://msdn.microsoft.com/library/en-us/directx9_c/point_sprites.asp
@@ -3510,28 +3510,31 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRen
 
         /* Default values */
         GLfloat att[3] = {1.0f, 0.0f, 0.0f};
-        
+
         /*
-         * Minium valid point size for OpenGL is 1.0f. For Direct3D it is 0.0f.
+         * Minimum valid point size for OpenGL is 1.0f. For Direct3D it is 0.0f.
          * This means that OpenGL will clamp really small point sizes to 1.0f.
          * To correct for this we need to multiply by the scale factor when sizes
          * are less than 1.0f. scale_factor =  1.0f / point_size.
          */
-        GLfloat pointSize = *((float*)&This->stateBlock->renderState[D3DRS_POINTSIZE]);
-        GLfloat scaleFactor;
-        if(pointSize < 1.0f) {
-            scaleFactor = pointSize * pointSize;
-        } else {
-            scaleFactor = 1.0f;
-        }
-        
-        if(This->stateBlock->renderState[WINED3DRS_POINTSCALEENABLE]) {
-            att[0] = *((float*)&This->stateBlock->renderState[WINED3DRS_POINTSCALE_A]) /
-                (This->stateBlock->viewport.Height * This->stateBlock->viewport.Height * scaleFactor);
-            att[1] = *((float*)&This->stateBlock->renderState[WINED3DRS_POINTSCALE_B]) /
-                (This->stateBlock->viewport.Height * This->stateBlock->viewport.Height * scaleFactor);
-            att[2] = *((float*)&This->stateBlock->renderState[WINED3DRS_POINTSCALE_C]) /
-                (This->stateBlock->viewport.Height * This->stateBlock->viewport.Height * scaleFactor);
+        GLfloat pointSize = *((float*)&This->stateBlock->renderState[WINED3DRS_POINTSIZE]);
+        if(pointSize > 0.0f) {
+            GLfloat scaleFactor;
+
+            if(pointSize < 1.0f) {
+                scaleFactor = pointSize * pointSize;
+            } else {
+                scaleFactor = 1.0f;
+            }
+
+            if(This->stateBlock->renderState[WINED3DRS_POINTSCALEENABLE]) {
+                att[0] = *((float*)&This->stateBlock->renderState[WINED3DRS_POINTSCALE_A]) /
+                    (This->stateBlock->viewport.Height * This->stateBlock->viewport.Height * scaleFactor);
+                att[1] = *((float*)&This->stateBlock->renderState[WINED3DRS_POINTSCALE_B]) /
+                    (This->stateBlock->viewport.Height * This->stateBlock->viewport.Height * scaleFactor);
+                att[2] = *((float*)&This->stateBlock->renderState[WINED3DRS_POINTSCALE_C]) /
+                    (This->stateBlock->viewport.Height * This->stateBlock->viewport.Height * scaleFactor);
+            }
         }
 
         if(GL_SUPPORT(ARB_POINT_PARAMETERS)) {
-- 
1.0.4


More information about the wine-patches mailing list