with Y=0=top, front/back determination is negated
authorBrian <brian.paul@tungstengraphics.com>
Mon, 13 Aug 2007 21:02:50 +0000 (15:02 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Mon, 13 Aug 2007 21:02:50 +0000 (15:02 -0600)
src/mesa/pipe/draw/draw_cull.c
src/mesa/pipe/draw/draw_twoside.c
src/mesa/pipe/draw/draw_unfilled.c

index 8b2ac5e..48a7f5d 100644 (file)
@@ -78,10 +78,10 @@ static void cull_tri( struct draw_stage *stage,
    header->det = ex * fy - ey * fx;
 
    if (header->det != 0) {
-      /* if (det > 0 then Z points toward camera and triangle is 
+      /* if (det < 0 then Z points toward camera and triangle is 
        * counter-clockwise winding.
        */
-      GLuint winding = (header->det > 0) ? PIPE_WINDING_CCW : PIPE_WINDING_CW;
+      GLuint winding = (header->det < 0) ? PIPE_WINDING_CCW : PIPE_WINDING_CW;
 
       if ((winding & cull_stage(stage)->winding) == 0) {
          /* triangle is not culled, pass to next stage */
index fdda6b3..20b2b4a 100644 (file)
@@ -53,9 +53,9 @@ static void twoside_begin( struct draw_stage *stage )
    /*
     * We'll multiply the primitive's determinant by this sign to determine
     * if the triangle is back-facing (negative).
-    * sign = 1 for CCW, -1 for CW
+    * sign = -1 for CCW, +1 for CW
     */
-   twoside->sign = (stage->draw->setup.front_winding == PIPE_WINDING_CCW) ? 1 : -1;
+   twoside->sign = (stage->draw->setup.front_winding == PIPE_WINDING_CCW) ? -1 : 1;
 
    stage->next->begin( stage->next );
 }
index 82e8775..05242d8 100644 (file)
@@ -119,7 +119,7 @@ static void unfilled_tri( struct draw_stage *stage,
                          struct prim_header *header )
 {
    struct unfilled_stage *unfilled = unfilled_stage(stage);
-   GLuint mode = unfilled->mode[header->det > 0.0];
+   GLuint mode = unfilled->mode[header->det < 0.0];
   
    switch (mode) {
    case PIPE_POLYGON_MODE_FILL: