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 */
/*
* 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 );
}
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: