diff --git a/applications/plugins/VolumetricRendering/src/VolumetricRendering/OglTetrahedralModel.inl b/applications/plugins/VolumetricRendering/src/VolumetricRendering/OglTetrahedralModel.inl index a2c4849bfa0..9bf08a8ffc4 100644 --- a/applications/plugins/VolumetricRendering/src/VolumetricRendering/OglTetrahedralModel.inl +++ b/applications/plugins/VolumetricRendering/src/VolumetricRendering/OglTetrahedralModel.inl @@ -178,6 +178,13 @@ void OglTetrahedralModel::initVisual() template void OglTetrahedralModel::updateVisual() { + // Workaround if updateVisual() is called without an opengl context + const auto* vparams = core::visual::VisualParams::defaultInstance(); + if (!vparams->isSupported(core::visual::API_OpenGL)) + { + return; + } + if ((modified && !m_positions.getValue().empty()) || useTopology) { @@ -320,24 +327,21 @@ void OglTetrahedralModel::drawTransparent(const core::visual::VisualP template void OglTetrahedralModel::computeBBox(const core::ExecParams * params, bool /* onlyVisible */) { - if (m_topology) + const type::vector& position = m_positions.getValue(); + + if (m_topology && position.size() > 0) { - const core::topology::BaseMeshTopology::SeqTetrahedra& vec = m_topology->getTetrahedra(); - core::topology::BaseMeshTopology::SeqTetrahedra::const_iterator it; - Coord v; - const type::vector& position = m_positions.getValue(); const SReal max_real = std::numeric_limits::max(); - const SReal min_real = std::numeric_limits::min(); + const SReal min_real = std::numeric_limits::lowest(); SReal maxBBox[3] = { min_real,min_real,min_real }; SReal minBBox[3] = { max_real,max_real,max_real }; - for (it = vec.begin(); it != vec.end(); it++) + for(const auto& tetra : m_topology->getTetrahedra()) { for (unsigned int i = 0; i< 4; i++) { - v = position[(*it)[i]]; - //v = x[(*it)[i]]; + const auto& v = position[tetra[i]]; if (minBBox[0] > v[0]) minBBox[0] = v[0]; if (minBBox[1] > v[1]) minBBox[1] = v[1]; diff --git a/applications/plugins/VolumetricRendering/src/VolumetricRendering/OglVolumetricModel.cpp b/applications/plugins/VolumetricRendering/src/VolumetricRendering/OglVolumetricModel.cpp index 36605896fa4..07716e96c4e 100644 --- a/applications/plugins/VolumetricRendering/src/VolumetricRendering/OglVolumetricModel.cpp +++ b/applications/plugins/VolumetricRendering/src/VolumetricRendering/OglVolumetricModel.cpp @@ -224,6 +224,13 @@ void OglVolumetricModel::initVisual() void OglVolumetricModel::updateVisual() { + // Workaround if updateVisual() is called without an opengl context + const auto* vparams = core::visual::VisualParams::defaultInstance(); + if (!vparams->isSupported(core::visual::API_OpenGL)) + { + return; + } + if (b_modified || d_tetrahedra.isDirty() || d_hexahedra.isDirty() || m_positions.isDirty()) { //if(b_useTopology)