@@ -699,14 +699,13 @@ impl Renderer {
699
699
let mut edges = [ & poly. edges [ 0 ] , & poly. edges [ 1 ] ] ;
700
700
let mut ranges = [ edges[ 0 ] . line_x_range ( y) , edges[ 1 ] . line_x_range ( y) ] ;
701
701
702
- if ranges[ 1 ] . 1 <= ranges[ 0 ] . 0 {
702
+ if ranges[ 1 ] . 0 < ranges[ 0 ] . 0 {
703
703
edges. swap ( 0 , 1 ) ;
704
704
ranges. swap ( 0 , 1 ) ;
705
705
}
706
706
707
707
let x_span_start = ranges[ 0 ] . 0 ;
708
- let x_span_end = ranges[ 1 ] . 1 ;
709
- let x_span_len = x_span_end + 1 - x_span_start;
708
+ let x_span_len = ranges[ 0 ] . 1 . max ( ranges[ 1 ] . 1 ) + 1 - x_span_start;
710
709
let wireframe = poly. alpha == 0 ;
711
710
712
711
let fill_all_edges = wireframe
@@ -719,7 +718,7 @@ impl Renderer {
719
718
|| edges[ 1 ] . x_incr ( ) == 0 ,
720
719
] ;
721
720
722
- let edge_mask = ( y == poly. top_y ) as u8 | ( y == poly. bot_y - 1 ) as u8 ;
721
+ let edge_mask = ( y == poly. top_y ) as u8 | ( y + 1 == poly. bot_y ) as u8 ;
723
722
724
723
macro_rules! interp_edge {
725
724
( $i: expr, $x: expr) => { {
@@ -736,7 +735,7 @@ impl Renderer {
736
735
}
737
736
738
737
let [ ( l_vert_color, l_uv, l_depth, l_w) , ( r_vert_color, r_uv, r_depth, r_w) ] =
739
- [ interp_edge ! ( 0 , x_span_start) , interp_edge ! ( 1 , x_span_end ) ] ;
738
+ [ interp_edge ! ( 0 , x_span_start) , interp_edge ! ( 1 , ranges [ 1 ] . 1 ) ] ;
740
739
741
740
let x_interp = InterpLineData :: < false > :: new ( l_w, r_w) ;
742
741
0 commit comments