-
Автор темы
- #1
В чите когда делаю рендер 3д залитого круга через треугольники - видны линии 1px между треугольниками, а когда в круг заходишь - какая то часть треугольников под тобой не рисуется
Пример:
Код круга:
Вызов:
Как сделать нормально рендер такого круга?
Пример:
Код круга:
C++:
void render::TriangleFilled(float x1, float y1, float x2, float y2, float x3, float y3, Color clr)
{
draw_list->AddTriangleFilled(ImVec2(x1, y1), ImVec2(x2, y2), ImVec2(x3, y3), GetU32(clr));
}
void render::DrawRing3D(int16_t x, int16_t y, int16_t z, int16_t radius, uint16_t points, Color color1, Color color2, float thickness)
{
Vector pos = Vector(x, y, z);
float step = (float)PI * 2.0f / points;
for (float a = 0; a < (PI * 2.0f); a += step)
{
Vector start(radius * cosf(a) + pos.x, radius * sinf(a) + pos.y, pos.z);
Vector end(radius * cosf(a + step) + pos.x, radius * sinf(a + step) + pos.y, pos.z);
Vector start2d;
Vector end2d;
Vector Position;
if (math::world_to_screen(start, start2d) &&
math::world_to_screen(end, end2d) && math::world_to_screen(pos, Position))
{
render_line(start2d[0], start2d[1], end2d[0], end2d[1], color1);
TriangleFilled(Position.x, Position.y, end2d.x, end2d.y, start2d.x, start2d.y, color2);
}
}
}
C++:
render::DrawRing3D(m_vecStartPosition.x, m_vecStartPosition.y, m_vecStartPosition.z, 32 * flAnimationProgress, 32, Color(255, 255, 255, 150), Color(255, 255, 255, 100), 2);