Skip to content

Commit

Permalink
add example code
Browse files Browse the repository at this point in the history
split the view to have different rendering styles for the same object/scene.
  • Loading branch information
LiangliangNan committed Jan 31, 2024
1 parent 2641a75 commit c4e00b2
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 44 deletions.
30 changes: 19 additions & 11 deletions applications/Mapple/paint_canvas.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1878,17 +1878,24 @@ void PaintCanvas::showCoordinatesUnderMouse(bool b) {


void PaintCanvas::draw() {
// To have split views of different rendering styles for the same object/scene.
//glEnable(GL_SCISSOR_TEST);
//int scissor[4];
//glGetIntegerv(GL_SCISSOR_BOX, scissor);
//glScissor(scissor[0], scissor[1], scissor[2] * 0.5f, scissor[3]);
//current_model()->renderer()->get_lines_drawable("edges")->set_visible(false);
//Viewer::draw();
//glScissor(scissor[2] * 0.5f, scissor[1], scissor[2] * 0.5f, scissor[3]);
//current_model()->renderer()->get_lines_drawable("edges")->set_visible(true);
//Viewer::draw();
//glScissor(scissor[0], scissor[1], scissor[2], scissor[3]);
#if 0
// Example code: split the view to have different rendering styles for the same object/scene.
glEnable(GL_SCISSOR_TEST);
int viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport);
glScissor(viewport[0], viewport[1], viewport[2] * 0.5f, viewport[3]);
for (const auto m : models_) {
for (auto d : m->renderer()->triangles_drawables())
d->draw(camera());
}
glScissor(viewport[2] * 0.5f, viewport[1], viewport[2] * 0.5f, viewport[3]);
for (const auto m : models_) {
for (auto d : m->renderer()->lines_drawables())
d->draw(camera());
}
glScissor(viewport[0], viewport[1], viewport[2], viewport[3]);

#else

if (models_.empty())
return;
Expand Down Expand Up @@ -1965,4 +1972,5 @@ void PaintCanvas::draw() {

if (edl())
edl()->end();
#endif
}
30 changes: 19 additions & 11 deletions easy3d/viewer/viewer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1729,17 +1729,24 @@ namespace easy3d {


void Viewer::draw() const {
// To have split views of different rendering styles for the same object/scene.
//glEnable(GL_SCISSOR_TEST);
//int scissor[4];
//glGetIntegerv(GL_SCISSOR_BOX, scissor);
//glScissor(scissor[0], scissor[1], scissor[2] * 0.5f, scissor[3]);
//current_model()->renderer()->get_lines_drawable("edges")->set_visible(false);
//Viewer::draw();
//glScissor(scissor[2] * 0.5f, scissor[1], scissor[2] * 0.5f, scissor[3]);
//current_model()->renderer()->get_lines_drawable("edges")->set_visible(true);
//Viewer::draw();
//glScissor(scissor[0], scissor[1], scissor[2], scissor[3]);
#if 0
// Example code: split the view to have different rendering styles for the same object/scene.
glEnable(GL_SCISSOR_TEST);
int viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport);
glScissor(viewport[0], viewport[1], viewport[2] * 0.5f, viewport[3]);
for (const auto m : models_) {
for (auto d : m->renderer()->triangles_drawables())
d->draw(camera());
}
glScissor(viewport[2] * 0.5f, viewport[1], viewport[2] * 0.5f, viewport[3]);
for (const auto m : models_) {
for (auto d : m->renderer()->lines_drawables())
d->draw(camera());
}
glScissor(viewport[0], viewport[1], viewport[2], viewport[3]);

#else

for (const auto m : models_) {
if (!m->renderer()->is_visible())
Expand Down Expand Up @@ -1786,6 +1793,7 @@ namespace easy3d {
draw_face_labels(current_model(), texter_, 1, vec3(0, 0, 1));
draw_vertex_labels(current_model(), texter_, 1, vec3(0, 1, 0));
}
#endif
#endif
}

Expand Down
30 changes: 19 additions & 11 deletions tutorials/Tutorial_203_Viewer_wxWidgets/viewer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -789,17 +789,24 @@ namespace easy3d {


void Viewer::draw() const {
// To have split views of different rendering styles for the same object/scene.
//glEnable(GL_SCISSOR_TEST);
//int scissor[4];
//glGetIntegerv(GL_SCISSOR_BOX, scissor);
//glScissor(scissor[0], scissor[1], scissor[2] * 0.5f, scissor[3]);
//current_model()->renderer()->get_lines_drawable("edges")->set_visible(false);
//Viewer::draw();
//glScissor(scissor[2] * 0.5f, scissor[1], scissor[2] * 0.5f, scissor[3]);
//current_model()->renderer()->get_lines_drawable("edges")->set_visible(true);
//Viewer::draw();
//glScissor(scissor[0], scissor[1], scissor[2], scissor[3]);
#if 0
// Example code: split the view to have different rendering styles for the same object/scene.
glEnable(GL_SCISSOR_TEST);
int viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport);
glScissor(viewport[0], viewport[1], viewport[2] * 0.5f, viewport[3]);
for (const auto m : models_) {
for (auto d : m->renderer()->triangles_drawables())
d->draw(camera());
}
glScissor(viewport[2] * 0.5f, viewport[1], viewport[2] * 0.5f, viewport[3]);
for (const auto m : models_) {
for (auto d : m->renderer()->lines_drawables())
d->draw(camera());
}
glScissor(viewport[0], viewport[1], viewport[2], viewport[3]);

#else

for (const auto m : models_) {
if (!m->renderer()->is_visible())
Expand Down Expand Up @@ -837,5 +844,6 @@ namespace easy3d {
if (d->is_visible())
d->draw(camera());
}
#endif
}
}
30 changes: 19 additions & 11 deletions tutorials/Tutorial_204_Viewer_Qt/viewer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -984,17 +984,24 @@ namespace easy3d {


void Viewer::draw() {
// To have split views of different rendering styles for the same object/scene.
//glEnable(GL_SCISSOR_TEST);
//int scissor[4];
//glGetIntegerv(GL_SCISSOR_BOX, scissor);
//glScissor(scissor[0], scissor[1], scissor[2] * 0.5f, scissor[3]);
//current_model()->renderer()->get_lines_drawable("edges")->set_visible(false);
//Viewer::draw();
//glScissor(scissor[2] * 0.5f, scissor[1], scissor[2] * 0.5f, scissor[3]);
//current_model()->renderer()->get_lines_drawable("edges")->set_visible(true);
//Viewer::draw();
//glScissor(scissor[0], scissor[1], scissor[2], scissor[3]);
#if 0
// Example code: split the view to have different rendering styles for the same object/scene.
glEnable(GL_SCISSOR_TEST);
int viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport);
glScissor(viewport[0], viewport[1], viewport[2] * 0.5f, viewport[3]);
for (const auto m : models_) {
for (auto d : m->renderer()->triangles_drawables())
d->draw(camera());
}
glScissor(viewport[2] * 0.5f, viewport[1], viewport[2] * 0.5f, viewport[3]);
for (const auto m : models_) {
for (auto d : m->renderer()->lines_drawables())
d->draw(camera());
}
glScissor(viewport[0], viewport[1], viewport[2], viewport[3]);

#else

easy3d_debug_log_gl_error

Expand Down Expand Up @@ -1030,6 +1037,7 @@ namespace easy3d {
if (d->is_visible())
d->draw(camera());
}
#endif
}

}

0 comments on commit c4e00b2

Please sign in to comment.