def draw_scanline(self, va: Vertex, vb: Vertex, y: int, texture: Texture): x1 = int(va.position.x) x2 = int(vb.position.x) sign = 1 if x2 > x1 else -1 factor = 0 for x in range(x1, x2 + sign * 1, sign): if x1 != x2: factor = (x - x1) / (x2 - x1) # color = interpolate(v1.color, v2.color, factor) v = interpolate(va, vb, factor) color = texture.sample(v.u, v.v) self.draw_point(Vector(x, y), color)