Browse Source

fix problems with polygon offset

tags/mesa_20090313
Brian 18 years ago
parent
commit
f6dffd6ee7
1 changed files with 10 additions and 11 deletions
  1. 10
    11
      src/mesa/state_tracker/st_atom_setup.c

+ 10
- 11
src/mesa/state_tracker/st_atom_setup.c View File

@@ -52,15 +52,15 @@ static GLuint translate_fill( GLenum mode )
}

static GLboolean get_offset_flag( GLuint fill_mode,
const struct gl_polygon_attrib *Polygon )
const struct gl_polygon_attrib *p )
{
switch (fill_mode) {
case PIPE_POLYGON_MODE_POINT:
return Polygon->OffsetPoint;
return p->OffsetPoint;
case PIPE_POLYGON_MODE_LINE:
return Polygon->OffsetLine;
return p->OffsetLine;
case PIPE_POLYGON_MODE_FILL:
return Polygon->OffsetFill;
return p->OffsetFill;
default:
assert(0);
return 0;
@@ -141,16 +141,15 @@ static void update_setup_state( struct st_context *st )
}
}

/* Hardware does offset for filled prims, but need to do it in
* software for unfilled.
*
* _NEW_POLYGON
/* _NEW_POLYGON
*/
if (setup.fill_cw != PIPE_POLYGON_MODE_FILL)
if (ctx->Polygon.OffsetUnits != 0.0 ||
ctx->Polygon.OffsetFactor != 0.0) {
setup.offset_cw = get_offset_flag( setup.fill_cw, &ctx->Polygon );
if (setup.fill_ccw != PIPE_POLYGON_MODE_FILL)
setup.offset_ccw = get_offset_flag( setup.fill_ccw, &ctx->Polygon );
setup.offset_units = ctx->Polygon.OffsetUnits;
setup.offset_scale = ctx->Polygon.OffsetFactor;
}

if (ctx->Polygon.SmoothFlag)
setup.poly_smooth = 1;

Loading…
Cancel
Save