Ответ: Затекстурированный многоугольник
Вообще в 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 заранее и тогда это будет не так медленно.
Как делать - решать тебе.
|