OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
libvgcode::OpenGLWrapper Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/libvgcode/src/OpenGLUtils.hpp>

Static Public Member Functions

static bool load_opengl (const std::string &context_version)
static void unload_opengl ()
static bool is_valid_context ()

Static Private Attributes

static bool s_valid_context = false

Detailed Description

Member Function Documentation

◆ is_valid_context()

bool libvgcode::OpenGLWrapper::is_valid_context ( )
inlinestatic
38{ return s_valid_context; }
static bool s_valid_context
Definition OpenGLUtils.hpp:44

References s_valid_context.

Referenced by libvgcode::ViewerImpl::init().

Here is the caller graph for this function:

◆ load_opengl()

bool libvgcode::OpenGLWrapper::load_opengl ( const std::string & context_version)
static
50{
51 s_valid_context = false;
52
53 const char* version = context_version.c_str();
54 for (int i = 0; OPENGL_ES_PREFIXES[i] != nullptr; ++i) {
55 const size_t length = strlen(OPENGL_ES_PREFIXES[i]);
56 if (strncmp(version, OPENGL_ES_PREFIXES[i], length) == 0) {
57 version += length;
58 break;
59 }
60 }
61
62 GLint major = 0;
63 GLint minor = 0;
64#ifdef _MSC_VER
65 const int res = sscanf_s(version, "%d.%d", &major, &minor);
66#else
67 const int res = sscanf(version, "%d.%d", &major, &minor);
68#endif // _MSC_VER
69 if (res != 2)
70 return false;
71
72#ifdef ENABLE_OPENGL_ES
73 s_valid_context = major > 3 || (major == 3 && minor >= 0);
74 const int glad_res = gladLoaderLoadGLES2();
75#else
76 s_valid_context = major > 3 || (major == 3 && minor >= 2);
77 const int glad_res = gladLoaderLoadGL();
78#endif // ENABLE_OPENGL_ES
79
80 if (glad_res == 0)
81 return false;
82
83#ifdef ENABLE_OPENGL_ES
84 glsafe(glGetIntegerv(GL_MAX_TEXTURE_SIZE, &s_max_texture_size));
85#endif // ENABLE_OPENGL_ES
86
87 return s_valid_context;
88}
#define glsafe(cmd)
Definition OpenGLUtils.hpp:25
#define GL_MAX_TEXTURE_SIZE
Definition gl.h:1146
int GLint
Definition gl.h:2062
#define glGetIntegerv
Definition gl.h:3873
GLAD_API_CALL int gladLoaderLoadGL(void)
Definition gl.c:2626
GLAD_API_CALL int gladLoaderLoadGLES2(void)
Definition gles2.c:830
float length(const Vec3 &v)
Definition Utils.cpp:45
static const char * OPENGL_ES_PREFIXES[]
Definition OpenGLUtils.cpp:42

References GL_MAX_TEXTURE_SIZE, gladLoaderLoadGL(), gladLoaderLoadGLES2(), glGetIntegerv, glsafe, libvgcode::length(), libvgcode::OPENGL_ES_PREFIXES, and s_valid_context.

Referenced by libvgcode::ViewerImpl::init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ unload_opengl()

void libvgcode::OpenGLWrapper::unload_opengl ( )
static
91{
92#ifdef ENABLE_OPENGL_ES
94#else
96#endif // ENABLE_OPENGL_ES
97}
GLAD_API_CALL void gladLoaderUnloadGL(void)
Definition gl.c:2649
GLAD_API_CALL void gladLoaderUnloadGLES2(void)
Definition gles2.c:866

References gladLoaderUnloadGL(), and gladLoaderUnloadGLES2().

Referenced by libvgcode::ViewerImpl::shutdown().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ s_valid_context

bool libvgcode::OpenGLWrapper::s_valid_context = false
staticprivate

Referenced by is_valid_context(), and load_opengl().


The documentation for this class was generated from the following files: