Fix front/back mix-up. added comments.
authorBrian <brian.paul@tungstengraphics.com>
Tue, 10 Jul 2007 17:54:03 +0000 (11:54 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Tue, 10 Jul 2007 17:54:03 +0000 (11:54 -0600)
src/mesa/pipe/draw/draw_unfilled.c

index a1d9d143520239ee1fe28a3abb2b4fe7f82c0626..8ee23d7493b8201777c4095b4b1cd9e95fa306d4 100644 (file)
  * 
  **************************************************************************/
 
+/**
+ * \brief  Drawing stage for handling glPolygonMode(line/point).
+ * Convert triangles to points or lines as needed.
+ */
+
 /* Authors:  Keith Whitwell <keith@tungstengraphics.com>
  */
 
 struct unfilled_stage {
    struct prim_stage stage;
 
+   /** [0] = front face, [1] = back face.
+    * legal values:  PIPE_POLYGON_MODE_FILL, PIPE_POLYGON_MODE_LINE,
+    * and PIPE_POLYGON_MODE_POINT,
+    */
    GLuint mode[2];
 };
 
@@ -50,8 +59,8 @@ static void unfilled_begin( struct prim_stage *stage )
 {
    struct unfilled_stage *unfilled = unfilled_stage(stage);
 
-   unfilled->mode[0] = stage->draw->setup.fill_ccw;
-   unfilled->mode[1] = stage->draw->setup.fill_cw;
+   unfilled->mode[0] = stage->draw->setup.fill_ccw; /* front */
+   unfilled->mode[1] = stage->draw->setup.fill_cw;  /* back */
 
    stage->next->begin( stage->next );
 }
@@ -87,6 +96,7 @@ static void points( struct prim_stage *stage,
    if (v2->edgeflag) point( stage, v2 );
 }
 
+
 static void lines( struct prim_stage *stage,
                   struct prim_header *header )
 {
@@ -109,7 +119,7 @@ static void unfilled_tri( struct prim_stage *stage,
                          struct prim_header *header )
 {
    struct unfilled_stage *unfilled = unfilled_stage(stage);
-   GLuint mode = unfilled->mode[header->det 0];
+   GLuint mode = unfilled->mode[header->det > 0.0];
   
    switch (mode) {
    case PIPE_POLYGON_MODE_FILL: