diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 8eff3e76eb..88af4b5b4f 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -1098,9 +1098,15 @@ void GLVolumeCollection::render(GLVolumeCollection::ERenderType type, bool disab GLShaderProgram* edges_shader = GUI::wxGetApp().get_shader("flat"); #endif // ENABLE_LEGACY_OPENGL_REMOVAL + ScopeGuard transparent_sg; if (type == ERenderType::Transparent) { glsafe(::glEnable(GL_BLEND)); glsafe(::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)); + glsafe(::glDepthMask(false)); + transparent_sg = ScopeGuard([]() { + glsafe(::glDisable(GL_BLEND)); + glsafe(::glDepthMask(true)); + }); } glsafe(::glCullFace(GL_BACK)); @@ -1233,9 +1239,6 @@ void GLVolumeCollection::render(GLVolumeCollection::ERenderType type, bool disab if (disable_cullface) glsafe(::glEnable(GL_CULL_FACE)); - - if (type == ERenderType::Transparent) - glsafe(::glDisable(GL_BLEND)); } bool GLVolumeCollection::check_outside_state(const BuildVolume &build_volume, ModelInstanceEPrintVolumeState *out_state) const