Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEnrico Turri <enricoturri@seznam.cz>2019-05-23 14:49:57 +0300
committerEnrico Turri <enricoturri@seznam.cz>2019-05-23 14:49:57 +0300
commit3aa14bddf519bc86d907421c56012d27c9bc3bb9 (patch)
treef2068f78c3e597ffa776985252b5f82253afac02 /src/slic3r/GUI/GLCanvas3DManager.hpp
parent4504569f8e5765e53607beecb97da5fec1d98d0c (diff)
Max texture size dependent on OpenGL version on Win and Linux and on retina monitors on Mac
Diffstat (limited to 'src/slic3r/GUI/GLCanvas3DManager.hpp')
-rw-r--r--src/slic3r/GUI/GLCanvas3DManager.hpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/slic3r/GUI/GLCanvas3DManager.hpp b/src/slic3r/GUI/GLCanvas3DManager.hpp
index d391cd60c..3ad30411c 100644
--- a/src/slic3r/GUI/GLCanvas3DManager.hpp
+++ b/src/slic3r/GUI/GLCanvas3DManager.hpp
@@ -29,6 +29,39 @@ struct Camera;
class GLCanvas3DManager
{
+#if ENABLE_TEXTURES_MAXSIZE_DEPENDENT_ON_OPENGL_VERSION
+public:
+ class GLInfo
+ {
+ mutable bool m_detected;
+
+ mutable std::string m_version;
+ mutable std::string m_glsl_version;
+ mutable std::string m_vendor;
+ mutable std::string m_renderer;
+
+ mutable int m_max_tex_size;
+ mutable float m_max_anisotropy;
+
+ public:
+ GLInfo();
+
+ const std::string& get_version() const;
+ const std::string& get_glsl_version() const;
+ const std::string& get_vendor() const;
+ const std::string& get_renderer() const;
+
+ int get_max_tex_size() const;
+ float get_max_anisotropy() const;
+
+ bool is_version_greater_or_equal_to(unsigned int major, unsigned int minor) const;
+
+ std::string to_string(bool format_as_html, bool extensions) const;
+
+ private:
+ void detect() const;
+ };
+#else
struct GLInfo
{
std::string version;
@@ -43,7 +76,11 @@ class GLCanvas3DManager
std::string to_string(bool format_as_html, bool extensions) const;
};
+#endif // ENABLE_TEXTURES_MAXSIZE_DEPENDENT_ON_OPENGL_VERSION
+#if ENABLE_TEXTURES_MAXSIZE_DEPENDENT_ON_OPENGL_VERSION
+private:
+#endif // ENABLE_TEXTURES_MAXSIZE_DEPENDENT_ON_OPENGL_VERSION
enum EMultisampleState : unsigned char
{
MS_Unknown,
@@ -55,7 +92,11 @@ class GLCanvas3DManager
CanvasesMap m_canvases;
wxGLContext* m_context;
+#if ENABLE_TEXTURES_MAXSIZE_DEPENDENT_ON_OPENGL_VERSION
+ static GLInfo s_gl_info;
+#else
GLInfo m_gl_info;
+#endif // ENABLE_TEXTURES_MAXSIZE_DEPENDENT_ON_OPENGL_VERSION
bool m_gl_initialized;
bool m_use_legacy_opengl;
bool m_use_VBOs;
@@ -75,7 +116,9 @@ public:
unsigned int count() const;
void init_gl();
+#if !ENABLE_TEXTURES_MAXSIZE_DEPENDENT_ON_OPENGL_VERSION
std::string get_gl_info(bool format_as_html, bool extensions) const;
+#endif // !ENABLE_TEXTURES_MAXSIZE_DEPENDENT_ON_OPENGL_VERSION
bool init(wxGLCanvas* canvas);
@@ -88,6 +131,10 @@ public:
static wxGLCanvas* create_wxglcanvas(wxWindow *parent);
+#if ENABLE_TEXTURES_MAXSIZE_DEPENDENT_ON_OPENGL_VERSION
+ static const GLInfo& get_gl_info() { return s_gl_info; }
+#endif // ENABLE_TEXTURES_MAXSIZE_DEPENDENT_ON_OPENGL_VERSION
+
private:
CanvasesMap::iterator do_get_canvas(wxGLCanvas* canvas);
CanvasesMap::const_iterator do_get_canvas(wxGLCanvas* canvas) const;