draw: fix point/line/tri flushing bug in vbuf code
Need to reset the point/line/tri functions to point to the "first" versions whenever we flush vertices. Fixes unfilled polygon rendering errors seen in demos/samples/logo.c. See comments for more info. NOTE: This is a candidate for the 7.10 branch.
This commit is contained in:
@@ -341,6 +341,16 @@ vbuf_flush_vertices( struct vbuf_stage *vbuf )
|
||||
vbuf->max_vertices = vbuf->nr_vertices = 0;
|
||||
vbuf->vertex_ptr = vbuf->vertices = NULL;
|
||||
}
|
||||
|
||||
/* Reset point/line/tri function pointers.
|
||||
* If (for example) we transition from points to tris and back to points
|
||||
* again, we need to call the vbuf_first_point() function again to flush
|
||||
* the triangles before drawing more points. This can happen when drawing
|
||||
* with front polygon mode = filled and back polygon mode = line or point.
|
||||
*/
|
||||
vbuf->stage.point = vbuf_first_point;
|
||||
vbuf->stage.line = vbuf_first_line;
|
||||
vbuf->stage.tri = vbuf_first_tri;
|
||||
}
|
||||
|
||||
|
||||
@@ -378,10 +388,6 @@ vbuf_flush( struct draw_stage *stage, unsigned flags )
|
||||
struct vbuf_stage *vbuf = vbuf_stage( stage );
|
||||
|
||||
vbuf_flush_vertices( vbuf );
|
||||
|
||||
stage->point = vbuf_first_point;
|
||||
stage->line = vbuf_first_line;
|
||||
stage->tri = vbuf_first_tri;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user