MCPcopy Create free account
hub / github.com/OGSR/OGSR-Engine / add_lines

Method add_lines

ogsr_engine/Layers/xrRender/dxDebugRender.cpp:49–94  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

47}
48
49void dxDebugRender::add_lines(Fvector const* vertices, u32 const& vertex_count, u16 const* pairs, u32 const& pair_count, u32 const& color, bool hud_mode)
50{
51 auto& line_vertices = hud_mode ? m_line_vertices_hud : m_line_vertices;
52 auto& line_indices = hud_mode ? m_line_indices_hud : m_line_indices;
53
54 size_t all_verts_count{}, all_inds_count{};
55 for (const auto& [color, vert_vec] : line_vertices)
56 {
57 all_verts_count += vert_vec.size();
58 all_inds_count += line_indices.at(color).size();
59 }
60
61 //Лимиты превышать нельзя ни в коем случае - убавить лимит если будут краши в R_DStreams.cpp
62 if ((all_verts_count + vertex_count) >= u16(-1))
63 {
64 // Msg("~~[%s.1] Rendered [%u] verts and [%u] inds", __FUNCTION__, all_verts_count, all_inds_count);
65 Render();
66 }
67 else if ((all_inds_count + 2 * pair_count) >= u16(-1))
68 {
69 // Msg("~~[%s.2] Rendered [%u] verts and [%u] inds", __FUNCTION__, all_verts_count, all_inds_count);
70 Render();
71 }
72
73 //////////////////////////////////////////////////////////////////
74
75 auto& vert_vec = line_vertices[color];
76 auto& ind_vec = line_indices[color];
77
78 const auto vertices_size = vert_vec.size(), indices_size = ind_vec.size();
79
80 ind_vec.resize(indices_size + 2 * pair_count);
81 auto I = ind_vec.begin() + indices_size, E = ind_vec.end();
82 const u16* J = pairs;
83 for (; I != E; ++I, ++J)
84 *I = static_cast<u16>(vertices_size + *J);
85
86 vert_vec.resize(vertices_size + vertex_count);
87 auto i = vert_vec.begin() + vertices_size, e = vert_vec.end();
88 Fvector const* j = vertices;
89 for (; i != e; ++i, ++j)
90 {
91 i->color = color;
92 i->p = *j;
93 }
94}
95
96void dxDebugRender::OnFrameEnd() { RCache.OnFrameEnd(); }
97

Callers 2

draw_obbFunction · 0.45
OnRenderMethod · 0.45

Calls 6

RenderFunction · 0.85
atMethod · 0.80
sizeMethod · 0.45
resizeMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected