Merge pull request #3251 from maxGimeno/Demo-Fix_removeAll-GF

Polyhedron Demo: Fix snapshot and erase all
This commit is contained in:
Sébastien Loriot 2018-07-25 18:56:52 +02:00
commit 597d80ccbc
1 changed files with 5 additions and 9 deletions

View File

@ -227,9 +227,11 @@ Scene::erase(QList<int> indices)
} }
Q_FOREACH(Scene_item* item, to_be_removed) { Q_FOREACH(Scene_item* item, to_be_removed) {
Item_id removed_item = item_id(item);
if(removed_item == -1) //case of the selection_item, for example.
continue;
if(item->parentGroup()) if(item->parentGroup())
item->parentGroup()->removeChild(item); item->parentGroup()->removeChild(item);
Item_id removed_item = item_id(item);
children.removeAll(removed_item); children.removeAll(removed_item);
indexErased(removed_item); indexErased(removed_item);
m_entries.removeAll(item); m_entries.removeAll(item);
@ -504,8 +506,7 @@ void Scene::renderScene(const QList<Scene_interface::Item_id> &items,
bool writing_depth, bool writing_depth,
QOpenGLFramebufferObject *fbo) QOpenGLFramebufferObject *fbo)
{ {
if(pass == -1)
viewer->makeCurrent();
viewer->setCurrentPass(pass); viewer->setCurrentPass(pass);
viewer->setDepthWriting(writing_depth); viewer->setDepthWriting(writing_depth);
viewer->setDepthPeelingFbo(fbo); viewer->setDepthPeelingFbo(fbo);
@ -663,7 +664,6 @@ void Scene::renderPointScene(const QList<Scene_interface::Item_id> &items,
void void
Scene::draw_aux(bool with_names, CGAL::Three::Viewer_interface* viewer) Scene::draw_aux(bool with_names, CGAL::Three::Viewer_interface* viewer)
{ {
viewer->makeCurrent();
QMap<float, int> picked_item_IDs; QMap<float, int> picked_item_IDs;
if(with_names) if(with_names)
viewer->glEnable(GL_DEPTH_TEST); viewer->glEnable(GL_DEPTH_TEST);
@ -703,7 +703,6 @@ Scene::draw_aux(bool with_names, CGAL::Three::Viewer_interface* viewer)
0.0f); 0.0f);
viewer->glClearDepthf(1); viewer->glClearDepthf(1);
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//renderScene(children, viewer, picked_item_IDs, false, 0,false, NULL);
renderScene(opaque_items, viewer, picked_item_IDs, false, 0,false, NULL); renderScene(opaque_items, viewer, picked_item_IDs, false, 0,false, NULL);
renderScene(transparent_items, viewer, picked_item_IDs, false, 0,false, NULL); renderScene(transparent_items, viewer, picked_item_IDs, false, 0,false, NULL);
fbos[0]->release(); fbos[0]->release();
@ -718,7 +717,6 @@ Scene::draw_aux(bool with_names, CGAL::Three::Viewer_interface* viewer)
0.0f); 0.0f);
viewer->glClearDepthf(1); viewer->glClearDepthf(1);
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// renderScene(children, viewer, picked_item_IDs, false, 0,true, NULL);
renderScene(opaque_items, viewer, picked_item_IDs, false, 0,true, NULL); renderScene(opaque_items, viewer, picked_item_IDs, false, 0,true, NULL);
renderScene(transparent_items, viewer, picked_item_IDs, false, 0,true, NULL); renderScene(transparent_items, viewer, picked_item_IDs, false, 0,true, NULL);
depth_test[0]->release(); depth_test[0]->release();
@ -739,7 +737,6 @@ Scene::draw_aux(bool with_names, CGAL::Three::Viewer_interface* viewer)
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
renderWireScene(children, viewer, picked_item_IDs, false); renderWireScene(children, viewer, picked_item_IDs, false);
renderPointScene(children, viewer, picked_item_IDs, false); renderPointScene(children, viewer, picked_item_IDs, false);
//renderScene(children, viewer, picked_item_IDs, false, i, false, depth_test[i-1]);
renderScene(opaque_items , viewer, picked_item_IDs, false, i, false, depth_test[i-1]); renderScene(opaque_items , viewer, picked_item_IDs, false, i, false, depth_test[i-1]);
renderScene(transparent_items, viewer, picked_item_IDs, false, i, false, depth_test[i-1]); renderScene(transparent_items, viewer, picked_item_IDs, false, i, false, depth_test[i-1]);
fbos[i]->release(); fbos[i]->release();
@ -755,7 +752,6 @@ Scene::draw_aux(bool with_names, CGAL::Three::Viewer_interface* viewer)
0.0f); 0.0f);
viewer->glClearDepthf(1); viewer->glClearDepthf(1);
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//renderScene(children, viewer, picked_item_IDs, false, i, true, depth_test[i-1]);
renderScene(opaque_items , viewer, picked_item_IDs, false, i, true, depth_test[i-1]); renderScene(opaque_items , viewer, picked_item_IDs, false, i, true, depth_test[i-1]);
renderScene(transparent_items, viewer, picked_item_IDs, false, i, true, depth_test[i-1]); renderScene(transparent_items, viewer, picked_item_IDs, false, i, true, depth_test[i-1]);
depth_test[i]->release(); depth_test[i]->release();
@ -786,7 +782,7 @@ Scene::draw_aux(bool with_names, CGAL::Three::Viewer_interface* viewer)
viewer->glClearColor(background.redF(), viewer->glClearColor(background.redF(),
background.greenF(), background.greenF(),
background.blueF(), background.blueF(),
1.0f); 0.0f);
viewer->glDisable(GL_DEPTH_TEST); viewer->glDisable(GL_DEPTH_TEST);
viewer->glClear(GL_COLOR_BUFFER_BIT); viewer->glClear(GL_COLOR_BUFFER_BIT);
viewer->glEnable(GL_BLEND); viewer->glEnable(GL_BLEND);