Показать сообщение отдельно
Старый 07.08.2012, 02:19   #7
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Затекстурированный многоугольник

Вообще в FastImage есть то, что тебе нужно, называется DrawPoly функция, ей можно сделать сразу же как тебе надо.
Правда, либа платная, так что безоговорочно её юзать не получится.

Другой вариант - через ортографическую камеру, но там придётся извращаться с координатами, чтобы попасть в нужное место на экране.

Понадобятся функции:
CreateMesh - создаёшь entity
AddSurface - создаёшь сурфейс
AddVertex - создаёшь вершины многоугольника, где тебе надо, задавая им не только пространственные, но и текстурные координаты
AddTriangle - на вершины сажаешь треугольники. Чтобы они были видны, вершины нужно задавать по часовой стрелке, если глядеть из камеры.
LoadTexture - грузишь текстуру
EntityTexture - сажаешь текстуру на твой многоугольник
CreateCamera - создаёшь камеру
CameraProjMode - делаешь её ортографической
CameraClsMode - делаешь чтобы она при рендере рендерила прямо поверх нарисованного (по умолчагнию она перед рендером затирает буфер)
PositionEntity - размещаешь камеру и многоугольник как тебе надо
RotateEntity - вращаешь, если надо

Текстурные координаты по такому принципу выставляются:
Верхний левый край текстуры - это UV 0,0, нижний правый - 1,1, в принципе, всё логично.

Правда, не знаю, захочешь ли ты извращаться камерой, имея только 1 вещь, которую надо ей рисовать, да ещё и совмещать с 2D.

FastImage позволит сделать всё 1 функцией, указывая 2D-координаты экрана, но либа платная.

Ну ещё можно упороться и отрисовать всё в 2D самому, по пикселям. Но во-первых, сложно и долго, во-вторых, работа с пикселами - дело тормозное, имей в виду. Но в принципе если у тебя многоугольник не будет меняться в процессе игры, то можно его отрисовать в Image заранее и тогда это будет не так медленно.

Как делать - решать тебе.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
Eugenes (07.08.2012), St_AnGer (07.08.2012)