Tech ENABLE_GLINDEXEDVERTEXARRAY_REMOVAL - Replace GLIndexedVertexArray with GLModel: GLVolume geometry + removed class GLIndexedVertexArray from codebase

(cherry picked from commit prusa3d/PrusaSlicer@1eac357739)
This commit is contained in:
enricoturri1966 2023-10-23 17:02:29 +08:00 committed by Noisyfox
parent d85bbcba50
commit d09dc36ff1
16 changed files with 765 additions and 1130 deletions

View file

@ -32,9 +32,9 @@ std::string GLGizmoFaceDetector::on_get_name() const
void GLGizmoFaceDetector::on_render()
{
if (m_iva.has_VBOs()) {
::glColor4f(0.f, 0.f, 1.f, 0.4f);
m_iva.render();
if (model.is_initialized()) {
model.set_color({0.f, 0.f, 1.f, 0.4f});
model.render();
}
}
@ -72,7 +72,7 @@ void GLGizmoFaceDetector::on_render_input_window(float x, float y, float bottom_
void GLGizmoFaceDetector::on_set_state()
{
if (get_state() == On) {
m_iva.release_geometry();
model.reset();
display_exterior_face();
}
}
@ -94,7 +94,10 @@ void GLGizmoFaceDetector::perform_recognition(const Selection& selection)
void GLGizmoFaceDetector::display_exterior_face()
{
int cnt = 0;
m_iva.release_geometry();
model.reset();
GLModel::Geometry init_data;
init_data.format = { GLModel::Geometry::EPrimitiveType::Triangles, GLModel::Geometry::EVertexLayout::P3N3, GLModel::Geometry::EIndexType::UINT };
const ModelObjectPtrs& objects = wxGetApp().model().objects;
for (ModelObject* mo : objects) {
@ -110,19 +113,15 @@ void GLGizmoFaceDetector::display_exterior_face()
continue;
for (int i = 0; i < 3; ++i) {
m_iva.push_geometry(double(mv_its.vertices[facet_vert_idxs[i]](0)),
double(mv_its.vertices[facet_vert_idxs[i]](1)),
double(mv_its.vertices[facet_vert_idxs[i]](2)),
0., 0., 1.);
init_data.add_vertex((Vec3f) mv_its.vertices[facet_vert_idxs[i]].cast<float>(), Vec3f{0.0f, 0.0f, 1.0f});
}
m_iva.push_triangle(cnt, cnt + 1, cnt + 2);
init_data.add_uint_triangle(cnt, cnt + 1, cnt + 2);
cnt += 3;
}
}
}
m_iva.finalize_geometry(true);
model.init_from(std::move(init_data));
}
CommonGizmosDataID GLGizmoFaceDetector::on_get_requirements() const