Получение линий сканирования произвольного 2d треугольника - PullRequest
1 голос
/ 13 января 2012

Как можно было бы получить строки сканирования для всех линий в 2D-треугольнике?

Я пытаюсь реализовать основную функцию программного рендеринга 2D - треугольники наложения текстур. Я делал это больше, чем могу сосчитать с помощью OpenGL, но я хромаю, пытаясь сделать это сам.

Я вижу ряд статей, в которых говорится, что для заполнения треугольника (три вершины которого имеют координаты текстуры, ограниченные [0, 1]), мне необходимо линейно интерполировать три точки. Какие? Я думал, что интерполяция была между двумя n-мерными значениями.

Примечание; Это не для 3D, это строго 2D, все треугольники произвольны (никак не выровнены по оси). Мне просто нужно заполнить экран их текстурами так, как это сделал бы OpenGL. Я не могу использовать OpenGL в качестве решения.

Ответы [ 2 ]

2 голосов
/ 14 января 2012

Отличный ответ и описание можно найти здесь: http://sol.gfxile.net/tri/index.html

Вы можете использовать алгоритм Брезенхэма , чтобы нарисовать / найти стороны.

1 голос
/ 13 января 2012

Один из способов справиться с этим - выполнить интерполяцию в два этапа, если вы используете алгоритм линии сканирования.Сначала вы интерполируете значение по краям треугольника, а когда начинаете рисовать линию развертки, вы интерполируете между начальным и конечным значением этой линии развертки.

Поскольку вы работаете в 2d, вы также можете использовать матричное преобразованиеполучить координату экрана для координаты текстуры.Вчера я ответил на аналогичный вопрос здесь .Техника называется изменение основы в математике.

...