]> git.tdb.fi Git - libs/gl.git/blob - source/backends/opengl/backend_opengl.cpp
Block further inlining of a variable after component assignment
[libs/gl.git] / source / backends / opengl / backend_opengl.cpp
1 #include <stdexcept>
2 #include <cstdlib>
3 #include "backend.h"
4 #include "gl.h"
5
6 using namespace std;
7
8 namespace Msp {
9 namespace GL {
10
11 GraphicsApi get_backend_api()
12 {
13 #ifdef GL_ES_VERSION_2_0
14         return OPENGL_ES;
15 #else
16         return OPENGL;
17 #endif
18 }
19
20 inline Version get_gl_version()
21 {
22         const char *gl_ver_ptr = reinterpret_cast<const char *>(glGetString(GL_VERSION));
23         if(!gl_ver_ptr)
24                 throw runtime_error("OpenGL version not available");
25
26         string gl_ver = gl_ver_ptr;
27         if(!gl_ver.compare(0, 10, "OpenGL ES "))
28                 gl_ver.erase(0, 10);
29
30         Version ver(gl_ver.substr(0, gl_ver.find(' ')));
31
32         if(const char *force_ver_ptr = getenv("MSPGL_FORCE_VERSION"))
33         {
34                 Version force_ver(force_ver_ptr);
35                 if(force_ver<ver)
36                         ver = force_ver;
37         }
38
39         return ver;
40 }
41
42 const Version &get_backend_version()
43 {
44         static Version version = get_gl_version();
45         return version;
46 }
47
48 } // namespace GL
49 } // namespace Msp