Various fixes

This commit is contained in:
enricoturri1966 2023-10-27 19:23:19 +08:00 committed by Noisyfox
parent a50c5a2b7a
commit fe78e40cb4
26 changed files with 176 additions and 58 deletions

View file

@ -6417,14 +6417,7 @@ void GLCanvas3D::_picking_pass()
_render_plates_for_picking(camera.get_view_matrix(), camera.get_projection_matrix());
}
m_camera_clipping_plane = m_gizmos.get_clipping_plane();
if (m_camera_clipping_plane.is_active()) {
::glClipPlane(GL_CLIP_PLANE0, (GLdouble*)m_camera_clipping_plane.get_data());
::glEnable(GL_CLIP_PLANE0);
}
_render_volumes_for_picking();
if (m_camera_clipping_plane.is_active())
::glDisable(GL_CLIP_PLANE0);
//BBS: remove the bed picking logic
//_render_bed_for_picking(!wxGetApp().plater()->get_camera().is_looking_downward());
@ -7163,7 +7156,7 @@ void GLCanvas3D::_render_style_editor()
void GLCanvas3D::_render_volumes_for_picking() const
{
GLShaderProgram* shader = wxGetApp().get_shader("flat");
GLShaderProgram* shader = wxGetApp().get_shader("flat_clip");
if (shader == nullptr)
return;
@ -7186,6 +7179,9 @@ void GLCanvas3D::_render_volumes_for_picking() const
const Camera& camera = wxGetApp().plater()->get_camera();
shader->set_uniform("view_model_matrix", camera.get_view_matrix() * volume.first->world_matrix());
shader->set_uniform("projection_matrix", camera.get_projection_matrix());
shader->set_uniform("volume_world_matrix", volume.first->world_matrix());
shader->set_uniform("z_range", m_volumes.get_z_range());
shader->set_uniform("clipping_plane", m_volumes.get_clipping_plane());
volume.first->picking = true;
volume.first->render();
volume.first->picking = false;