LINUX.ORG.RU

Нарисовать треугольник 2D с uv-mapping'ом...

 ,


0

2

А подскажите как написать на сишечке... есть 3D меш с uv координатами. Из него z выкинуто, все полигоны уже 2d и только видимые. то есть есть пары точек ((x, y), (u, v)) ну и треугольники из них. Надо бы это растеризовать. (u, v) - координаты в картиночке 256x256. а надо это все отрисовать на экране, в котором координаты (x, y).

Как мне отрисовать такой треугольник? (((x1, y1), (u1, v1)), ((x2, y2), (u2, v2)), ((x3, y3), (u3, v3))) А дальше я уже сам придумаю что делать :( Надо без OpenGL и всяких плюшек, и используя только код на C, без float'ов c double'ами.

Это НЕ ДЛЯ ИГРЫ. (не умею я ничего такого делать). Это хренов эмбеддед. Да, под Linux.

★★

Нужно сначала реализовать алгоритм рисования линии (Брезенхема, DDA-линии). А потом использовать его для рисования треугольника как здесь, например. Даже не знаю, есть ли у алгоритма рисования закрашенного треугольника название, но примеров его реализации можно найти достаточно много. С использованием только целых чисел проблем быть не должно.

xaizek ★★ ()
Последнее исправление: xaizek (всего исправлений: 1)
Ответ на: комментарий от anonymous

Дык, GPU так и делают. Но только у ТСа GPU нет, поэтому придется страдать. То ли он задачу слишком сложную для железа выбрал, то ли железо слишком слабое.

Это как пытаться интуры численно решать на железном Феликсе...

Anon ()

1. Найти формулу для перевода точек треугольника из x/y в экранные координаты.
2. Найти способ растеризации треугольника (в интернете найдете за несколько секунд, вроде бы даже в самом стандарте на ОпенГЛ он описан).
3. В стандарте ОпенГЛ описан алгоритм получения значений u/v для точки треугольника по значениям u/v его вершни. Можно найти в интернете.
4. Выборку из текстуры сможете сделать сами, я в вас верю.

P.S. Если что-то не очень понятно и есть вопросы - задавайте, постараюсь ответить.

trex6 ★★★★★ ()
Последнее исправление: trex6 (всего исправлений: 1)

Можно, например, окружить каждый треугольник окружностью и проверять каждую точку круга на принадлежность треугольнику. (google://point in polygon)

x4DA ★★★★ ()