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 8b2ac5ea5f9685ec3a36be999b22dcbdc1e78699..48a7f5dab8edd1fb9fc380efedd3e3d7cda20528 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 fdda6b362fa5c4f23d6ee0126f367e2be11bf9ae..20b2b4a8aa4e35b50703020d35700352eb2fcb72 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 82e8775f59f1d6c3faaa5a1baa0429f1a1e60a3c..05242d8d107c1061f0ccd57f97e631bbdac71362 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: