added drawing cuttoffs to triangle functions
This commit is contained in:
		
							parent
							
								
									129c84d43e
								
							
						
					
					
						commit
						adf5e6a761
					
				
					 1 changed files with 8 additions and 2 deletions
				
			
		
							
								
								
									
										10
									
								
								c3d.c
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								c3d.c
									
										
									
									
									
								
							|  | @ -168,7 +168,10 @@ void FillTopFlatZbuffer(Zee *zee, Tri2D *t, Tri2D *tp) { | ||||||
|     double curx1 = t->c.x; |     double curx1 = t->c.x; | ||||||
|     double curx2 = t->c.x; |     double curx2 = t->c.x; | ||||||
| 
 | 
 | ||||||
|     for (int scanline = t->c.y; scanline >= t->a.y; scanline--) { | 	int scanbottom = t->c.y; | ||||||
|  | 	int scantop = Max(t->a.y, 0); | ||||||
|  | 
 | ||||||
|  |     for (int scanline = scanbottom; scanline >= scantop; scanline--) { | ||||||
|         if (0 <= scanline && scanline < RENDERHEIGHT) { |         if (0 <= scanline && scanline < RENDERHEIGHT) { | ||||||
| 
 | 
 | ||||||
| 			DrawScanline(zee, tp, curx1, curx2, scanline); | 			DrawScanline(zee, tp, curx1, curx2, scanline); | ||||||
|  | @ -206,7 +209,10 @@ void FillBottomFlatZbuffer(Zee *zee, Tri2D *t, Tri2D *tp) { | ||||||
|     double curx1 = t->a.x; |     double curx1 = t->a.x; | ||||||
|     double curx2 = t->a.x; |     double curx2 = t->a.x; | ||||||
| 
 | 
 | ||||||
|     for (int scanline = t->a.y; scanline < t->c.y; | 	int scantop = t->a.y; // start must always be the true beging of the triangle, otherwise everything will be offset
 | ||||||
|  | 	int scanbottom = Min(t->c.y, RENDERHEIGHT); // we can stop rendering as soon as it goes off screen
 | ||||||
|  | 
 | ||||||
|  |     for (int scanline = scantop; scanline < scanbottom; | ||||||
|          scanline++) { // TODO: Possibly more optimization possible here, use linear correspondance
 |          scanline++) { // TODO: Possibly more optimization possible here, use linear correspondance
 | ||||||
|                        // for y, not just x to get depth
 |                        // for y, not just x to get depth
 | ||||||
|         if (0 <= scanline && scanline < RENDERHEIGHT) { |         if (0 <= scanline && scanline < RENDERHEIGHT) { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue