Я уже прокомментировал использование заливки и как она будет лучше, поскольку она более гибкая, но еще одно возможное решение - сканлайн. (Я говорю «возможно», потому что он делает много предположений о вашей геометрии, но для конкретного показанного набора и многих похожих будет работать.)
Для вашего примера с 3 точками: найдите вершину пересечения отрезка v1, v2 и линии, на которой лежит v3. (Вершина в верхнем левом углу v2) Мы назовем эту вершину v4.
For every vertex pair a,b down v1,v4 and v1,v3
For every vertex from a to b
Mark as in the set
For every vertex pair a,b down v3,v2 and v4,v3
For every vertex from a to b
Mark as in the set
Это называется scanline, потому что (на изображении выше) вы идете вниз по красной и зеленой линиям одновременно, а затем по красной и синей линиям одновременно сканируете линии.
Это решение будет очень быстрым, если есть шаблон индекса, что часто имеет место. В противном случае потребуется вычисление, чтобы определить, какая соседняя вершина лежит на прямой.
Забавно, что отсканирование, барицентрическое тестирование (в ограничивающей рамке треугольника) и заливка заливкой - все это способы рисования треугольников в 3D-рендеринге.