forked from AbleOS/ableos
Tri work
This commit is contained in:
parent
d143acb8b6
commit
4a0f65753e
|
@ -329,7 +329,7 @@ put_hline := fn(surface: Surface, y: uint, x0: uint, x1: uint, color: Color): vo
|
|||
return
|
||||
}
|
||||
|
||||
put_tri_wireframe := fn(surface: Surface, p0: Vec2(int), p1: Vec2(int), p2: Vec2(int), color: Color): void {
|
||||
put_tri_wireframe := fn(surface: Surface, p0: Vec2(uint), p1: Vec2(uint), p2: Vec2(uint), color: Color): void {
|
||||
put_line(surface, p0, p1, color)
|
||||
put_line(surface, p1, p2, color)
|
||||
put_line(surface, p2, p0, color)
|
||||
|
@ -355,8 +355,24 @@ put_tri_filled := fn(surface: Surface, p0: Vec2(uint), p1: Vec2(uint), p2: Vec2(
|
|||
p2 = tmp
|
||||
}
|
||||
|
||||
primary_dx := @as(int, @bitcast(p2.x - p0.x))
|
||||
primary_dy := @as(int, @bitcast(p2.y - p0.y))
|
||||
primary_error := @as(int, 2) * primary_dx - primary_dy
|
||||
|
||||
|
||||
secondary_dx := @as(int, @bitcast(p1.x - p0.x))
|
||||
secondary_dy := @as(int, @bitcast(p1.y - p0.y))
|
||||
secondary_error := @as(int, 2) * secondary_dx - secondary_dy
|
||||
|
||||
y := p0.y
|
||||
loop if y > p2.y break else {
|
||||
if primary_error > 0 {
|
||||
x += xi
|
||||
primary_error += 2 * (dx - dy)
|
||||
} else {
|
||||
primary_error += 2 * dx
|
||||
}
|
||||
|
||||
y += 1
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue