Unique OpenGL context set as default
This commit is contained in:
parent
a8d407b27e
commit
cceff0c519
5 changed files with 0 additions and 96 deletions
|
@ -15,8 +15,6 @@
|
||||||
//====================
|
//====================
|
||||||
#define ENABLE_1_42_0_ALPHA1 1
|
#define ENABLE_1_42_0_ALPHA1 1
|
||||||
|
|
||||||
// Uses a unique opengl context
|
|
||||||
#define ENABLE_USE_UNIQUE_GLCONTEXT (1 && ENABLE_1_42_0_ALPHA1)
|
|
||||||
// Disable synchronization of unselected instances
|
// Disable synchronization of unselected instances
|
||||||
#define DISABLE_INSTANCES_SYNCH (0 && ENABLE_1_42_0_ALPHA1)
|
#define DISABLE_INSTANCES_SYNCH (0 && ENABLE_1_42_0_ALPHA1)
|
||||||
// Scene's GUI made using imgui library
|
// Scene's GUI made using imgui library
|
||||||
|
|
|
@ -3844,12 +3844,7 @@ GLCanvas3D::GLCanvas3D(wxGLCanvas* canvas)
|
||||||
#endif // not ENABLE_IMGUI
|
#endif // not ENABLE_IMGUI
|
||||||
{
|
{
|
||||||
if (m_canvas != nullptr)
|
if (m_canvas != nullptr)
|
||||||
{
|
|
||||||
#if !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
m_context = new wxGLContext(m_canvas);
|
|
||||||
#endif // !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
m_timer.SetOwner(m_canvas);
|
m_timer.SetOwner(m_canvas);
|
||||||
}
|
|
||||||
|
|
||||||
m_selection.set_volumes(&m_volumes.volumes);
|
m_selection.set_volumes(&m_volumes.volumes);
|
||||||
}
|
}
|
||||||
|
@ -3857,14 +3852,6 @@ GLCanvas3D::GLCanvas3D(wxGLCanvas* canvas)
|
||||||
GLCanvas3D::~GLCanvas3D()
|
GLCanvas3D::~GLCanvas3D()
|
||||||
{
|
{
|
||||||
reset_volumes();
|
reset_volumes();
|
||||||
|
|
||||||
#if !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
if (m_context != nullptr)
|
|
||||||
{
|
|
||||||
delete m_context;
|
|
||||||
m_context = nullptr;
|
|
||||||
}
|
|
||||||
#endif // !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLCanvas3D::post_event(wxEvent &&event)
|
void GLCanvas3D::post_event(wxEvent &&event)
|
||||||
|
@ -3972,16 +3959,6 @@ bool GLCanvas3D::init(bool useVBOs, bool use_legacy_opengl)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
bool GLCanvas3D::set_current()
|
|
||||||
{
|
|
||||||
if ((m_canvas != nullptr) && (m_context != nullptr))
|
|
||||||
return m_canvas->SetCurrent(*m_context);
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif // !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
|
|
||||||
void GLCanvas3D::set_as_dirty()
|
void GLCanvas3D::set_as_dirty()
|
||||||
{
|
{
|
||||||
m_dirty = true;
|
m_dirty = true;
|
||||||
|
@ -3996,12 +3973,6 @@ void GLCanvas3D::reset_volumes()
|
||||||
{
|
{
|
||||||
if (!m_volumes.empty())
|
if (!m_volumes.empty())
|
||||||
{
|
{
|
||||||
#if !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
// ensures this canvas is current
|
|
||||||
if (!set_current())
|
|
||||||
return;
|
|
||||||
#endif // !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
|
|
||||||
m_selection.clear();
|
m_selection.clear();
|
||||||
m_volumes.release_geometry();
|
m_volumes.release_geometry();
|
||||||
m_volumes.clear();
|
m_volumes.clear();
|
||||||
|
@ -4278,11 +4249,7 @@ void GLCanvas3D::render()
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// ensures this canvas is current and initialized
|
// ensures this canvas is current and initialized
|
||||||
#if ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
if (!_set_current() || !_3DScene::init(m_canvas))
|
if (!_set_current() || !_3DScene::init(m_canvas))
|
||||||
#else
|
|
||||||
if (!set_current() || !_3DScene::init(m_canvas))
|
|
||||||
#endif // ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#if ENABLE_REWORKED_BED_SHAPE_CHANGE
|
#if ENABLE_REWORKED_BED_SHAPE_CHANGE
|
||||||
|
@ -4466,11 +4433,6 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re
|
||||||
{
|
{
|
||||||
if ((m_canvas == nullptr) || (m_config == nullptr) || (m_model == nullptr))
|
if ((m_canvas == nullptr) || (m_config == nullptr) || (m_model == nullptr))
|
||||||
return;
|
return;
|
||||||
#if !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
// ensures this canvas is current
|
|
||||||
if (!set_current())
|
|
||||||
return;
|
|
||||||
#endif // !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
|
|
||||||
struct ModelVolumeState {
|
struct ModelVolumeState {
|
||||||
ModelVolumeState(const GLVolume *volume) :
|
ModelVolumeState(const GLVolume *volume) :
|
||||||
|
@ -4778,12 +4740,6 @@ void GLCanvas3D::load_gcode_preview(const GCodePreviewData& preview_data, const
|
||||||
const Print *print = this->fff_print();
|
const Print *print = this->fff_print();
|
||||||
if ((m_canvas != nullptr) && (print != nullptr))
|
if ((m_canvas != nullptr) && (print != nullptr))
|
||||||
{
|
{
|
||||||
#if !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
// ensures that this canvas is current
|
|
||||||
if (!set_current())
|
|
||||||
return;
|
|
||||||
#endif // !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
|
|
||||||
std::vector<float> tool_colors = _parse_colors(str_tool_colors);
|
std::vector<float> tool_colors = _parse_colors(str_tool_colors);
|
||||||
|
|
||||||
if (m_volumes.empty())
|
if (m_volumes.empty())
|
||||||
|
@ -5523,11 +5479,6 @@ Point GLCanvas3D::get_local_mouse_position() const
|
||||||
|
|
||||||
void GLCanvas3D::reset_legend_texture()
|
void GLCanvas3D::reset_legend_texture()
|
||||||
{
|
{
|
||||||
#if !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
if (!set_current())
|
|
||||||
return;
|
|
||||||
#endif // !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
|
|
||||||
m_legend_texture.reset();
|
m_legend_texture.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5958,7 +5909,6 @@ bool GLCanvas3D::_init_toolbar()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
bool GLCanvas3D::_set_current()
|
bool GLCanvas3D::_set_current()
|
||||||
{
|
{
|
||||||
if ((m_canvas != nullptr) && (m_context != nullptr))
|
if ((m_canvas != nullptr) && (m_context != nullptr))
|
||||||
|
@ -5966,7 +5916,6 @@ bool GLCanvas3D::_set_current()
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#endif ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
|
|
||||||
void GLCanvas3D::_resize(unsigned int w, unsigned int h)
|
void GLCanvas3D::_resize(unsigned int w, unsigned int h)
|
||||||
{
|
{
|
||||||
|
@ -5978,11 +5927,7 @@ void GLCanvas3D::_resize(unsigned int w, unsigned int h)
|
||||||
#endif // ENABLE_IMGUI
|
#endif // ENABLE_IMGUI
|
||||||
|
|
||||||
// ensures that this canvas is current
|
// ensures that this canvas is current
|
||||||
#if ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
_set_current();
|
_set_current();
|
||||||
#else
|
|
||||||
set_current();
|
|
||||||
#endif // ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
::glViewport(0, 0, w, h);
|
::glViewport(0, 0, w, h);
|
||||||
|
|
||||||
::glMatrixMode(GL_PROJECTION);
|
::glMatrixMode(GL_PROJECTION);
|
||||||
|
@ -6862,12 +6807,6 @@ void GLCanvas3D::_stop_timer()
|
||||||
|
|
||||||
void GLCanvas3D::_load_print_toolpaths()
|
void GLCanvas3D::_load_print_toolpaths()
|
||||||
{
|
{
|
||||||
#if !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
// ensures this canvas is current
|
|
||||||
if (!set_current())
|
|
||||||
return;
|
|
||||||
#endif // !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
|
|
||||||
const Print *print = this->fff_print();
|
const Print *print = this->fff_print();
|
||||||
if (print == nullptr)
|
if (print == nullptr)
|
||||||
return;
|
return;
|
||||||
|
@ -8010,31 +7949,16 @@ std::vector<float> GLCanvas3D::_parse_colors(const std::vector<std::string>& col
|
||||||
|
|
||||||
void GLCanvas3D::_generate_legend_texture(const GCodePreviewData& preview_data, const std::vector<float>& tool_colors)
|
void GLCanvas3D::_generate_legend_texture(const GCodePreviewData& preview_data, const std::vector<float>& tool_colors)
|
||||||
{
|
{
|
||||||
#if !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
if (!set_current())
|
|
||||||
return;
|
|
||||||
#endif // !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
|
|
||||||
m_legend_texture.generate(preview_data, tool_colors, *this, m_dynamic_background_enabled && _is_any_volume_outside());
|
m_legend_texture.generate(preview_data, tool_colors, *this, m_dynamic_background_enabled && _is_any_volume_outside());
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLCanvas3D::_generate_warning_texture(const std::string& msg)
|
void GLCanvas3D::_generate_warning_texture(const std::string& msg)
|
||||||
{
|
{
|
||||||
#if !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
if (!set_current())
|
|
||||||
return;
|
|
||||||
#endif // !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
|
|
||||||
m_warning_texture.generate(msg);
|
m_warning_texture.generate(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLCanvas3D::_reset_warning_texture()
|
void GLCanvas3D::_reset_warning_texture()
|
||||||
{
|
{
|
||||||
#if !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
if (!set_current())
|
|
||||||
return;
|
|
||||||
#endif // !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
|
|
||||||
m_warning_texture.reset();
|
m_warning_texture.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -894,9 +894,7 @@ public:
|
||||||
GLCanvas3D(wxGLCanvas* canvas);
|
GLCanvas3D(wxGLCanvas* canvas);
|
||||||
~GLCanvas3D();
|
~GLCanvas3D();
|
||||||
|
|
||||||
#if ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
void set_context(wxGLContext* context) { m_context = context; }
|
void set_context(wxGLContext* context) { m_context = context; }
|
||||||
#endif // ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
|
|
||||||
wxGLCanvas* get_wxglcanvas() { return m_canvas; }
|
wxGLCanvas* get_wxglcanvas() { return m_canvas; }
|
||||||
|
|
||||||
|
@ -905,10 +903,6 @@ public:
|
||||||
bool init(bool useVBOs, bool use_legacy_opengl);
|
bool init(bool useVBOs, bool use_legacy_opengl);
|
||||||
void post_event(wxEvent &&event);
|
void post_event(wxEvent &&event);
|
||||||
|
|
||||||
#if !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
bool set_current();
|
|
||||||
#endif // !ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
|
|
||||||
void set_as_dirty();
|
void set_as_dirty();
|
||||||
|
|
||||||
unsigned int get_volumes_count() const;
|
unsigned int get_volumes_count() const;
|
||||||
|
@ -1047,9 +1041,7 @@ private:
|
||||||
|
|
||||||
bool _init_toolbar();
|
bool _init_toolbar();
|
||||||
|
|
||||||
#if ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
bool _set_current();
|
bool _set_current();
|
||||||
#endif // ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
void _resize(unsigned int w, unsigned int h);
|
void _resize(unsigned int w, unsigned int h);
|
||||||
|
|
||||||
BoundingBoxf3 _max_bounding_box() const;
|
BoundingBoxf3 _max_bounding_box() const;
|
||||||
|
|
|
@ -113,16 +113,13 @@ std::string GLCanvas3DManager::GLInfo::to_string(bool format_as_html, bool exten
|
||||||
GLCanvas3DManager::EMultisampleState GLCanvas3DManager::s_multisample = GLCanvas3DManager::MS_Unknown;
|
GLCanvas3DManager::EMultisampleState GLCanvas3DManager::s_multisample = GLCanvas3DManager::MS_Unknown;
|
||||||
|
|
||||||
GLCanvas3DManager::GLCanvas3DManager()
|
GLCanvas3DManager::GLCanvas3DManager()
|
||||||
#if ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
: m_context(nullptr)
|
: m_context(nullptr)
|
||||||
#endif // ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
, m_gl_initialized(false)
|
, m_gl_initialized(false)
|
||||||
, m_use_legacy_opengl(false)
|
, m_use_legacy_opengl(false)
|
||||||
, m_use_VBOs(false)
|
, m_use_VBOs(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
GLCanvas3DManager::~GLCanvas3DManager()
|
GLCanvas3DManager::~GLCanvas3DManager()
|
||||||
{
|
{
|
||||||
if (m_context != nullptr)
|
if (m_context != nullptr)
|
||||||
|
@ -131,7 +128,6 @@ GLCanvas3DManager::~GLCanvas3DManager()
|
||||||
m_context = nullptr;
|
m_context = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
|
|
||||||
bool GLCanvas3DManager::add(wxGLCanvas* canvas)
|
bool GLCanvas3DManager::add(wxGLCanvas* canvas)
|
||||||
{
|
{
|
||||||
|
@ -147,7 +143,6 @@ bool GLCanvas3DManager::add(wxGLCanvas* canvas)
|
||||||
|
|
||||||
canvas3D->bind_event_handlers();
|
canvas3D->bind_event_handlers();
|
||||||
|
|
||||||
#if ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
if (m_context == nullptr)
|
if (m_context == nullptr)
|
||||||
{
|
{
|
||||||
m_context = new wxGLContext(canvas);
|
m_context = new wxGLContext(canvas);
|
||||||
|
@ -156,7 +151,6 @@ bool GLCanvas3DManager::add(wxGLCanvas* canvas)
|
||||||
}
|
}
|
||||||
|
|
||||||
canvas3D->set_context(m_context);
|
canvas3D->set_context(m_context);
|
||||||
#endif // ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
|
|
||||||
m_canvases.insert(CanvasesMap::value_type(canvas, canvas3D));
|
m_canvases.insert(CanvasesMap::value_type(canvas, canvas3D));
|
||||||
|
|
||||||
|
|
|
@ -51,9 +51,7 @@ class GLCanvas3DManager
|
||||||
typedef std::map<wxGLCanvas*, GLCanvas3D*> CanvasesMap;
|
typedef std::map<wxGLCanvas*, GLCanvas3D*> CanvasesMap;
|
||||||
|
|
||||||
CanvasesMap m_canvases;
|
CanvasesMap m_canvases;
|
||||||
#if ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
wxGLContext* m_context;
|
wxGLContext* m_context;
|
||||||
#endif // ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
GLInfo m_gl_info;
|
GLInfo m_gl_info;
|
||||||
bool m_gl_initialized;
|
bool m_gl_initialized;
|
||||||
bool m_use_legacy_opengl;
|
bool m_use_legacy_opengl;
|
||||||
|
@ -62,9 +60,7 @@ class GLCanvas3DManager
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GLCanvas3DManager();
|
GLCanvas3DManager();
|
||||||
#if ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
~GLCanvas3DManager();
|
~GLCanvas3DManager();
|
||||||
#endif // ENABLE_USE_UNIQUE_GLCONTEXT
|
|
||||||
|
|
||||||
bool add(wxGLCanvas* canvas);
|
bool add(wxGLCanvas* canvas);
|
||||||
bool remove(wxGLCanvas* canvas);
|
bool remove(wxGLCanvas* canvas);
|
||||||
|
|
Loading…
Add table
Reference in a new issue